mysql-如何选择另一个表中不存在的行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql-如何选择另一个表中不存在的行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1625字,纯文字阅读大概需要3分钟。
内容图文
我想创建一个报告.
我有2张桌子:
>学生列表
> transaction_list
这是那些表中包含的行
学生清单
Stud_ID | Name
1 | Cat
2 | Dog
3 | Rabbit
transaction_list
Trans_ID | Stud_ID | Payment_Month
1 | 1 | January
2 | 1 | February
现在,我要从transaction_list中存在的student_list中选择数据,并将其与来自transaction_list中不存在的student_list中的数据合并,其中Payment_Month =“ January”
我已经试过这个查询
SELECT Name, Trans_ID, Payment_Month
FROM student_list s
LEFT JOIN transaction_list t
ON t.Stud_ID = s.Stud_ID
WHERE Payment_Month = "January"
UNION
SELECT Name, Trans_ID, Payment_Month
FROM student_list s
LEFT JOIN transaction_list t
ON t.Stud_ID = s.Stud_ID
WHERE t.Stud_ID IS NULL
我知道了
Name | Trans_ID | Payment_Month
Cat | 1 | January
Dog | - | -
Rabbit | - | -
但是,当我将查询中的Payment_Month值更改为“ March”时,我得到了
Name | Trans_ID | Payment_Month
Dog | - | -
Rabbit | - | -
不是我想要的,因为我想要这样
Name | Trans_ID | Payment_Month
Cat | - | -
Dog | - | -
Rabbit | - | -
反正我能得到那个吗?
解决方法:
SELECT Name, Trans_ID, Payment_Month
FROM student_list s
LEFT JOIN transaction_list t
ON (t.Stud_ID = s.Stud_ID AND Payment_Month = "January")
UNION
SELECT Name, Trans_ID, Payment_Month
FROM student_list s
LEFT JOIN transaction_list t
ON t.Stud_ID = s.Stud_ID
WHERE t.Stud_ID IS NULL
这样尝试.通过使用WHERE,您可以按查询提供的实际结果进行过滤,因此,如果LEFT JOIN提供的结果为null,但您正在该列上进行过滤,则该行将从结果集中删除.
通过将月份设置为JOIN条件,它将仅在此列上(在JOIN添加的列上)返回null并将该行保留在结果集中.
内容总结
以上是互联网集市为您收集整理的mysql-如何选择另一个表中不存在的行全部内容,希望文章能够帮你解决mysql-如何选择另一个表中不存在的行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。