mysql – 使用WHERE选择LEFT / RIGHT JOIN并返回NULL
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 使用WHERE选择LEFT / RIGHT JOIN并返回NULL,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1757字,纯文字阅读大概需要3分钟。
内容图文
![mysql – 使用WHERE选择LEFT / RIGHT JOIN并返回NULL](/upload/InfoBanner/zyjiaocheng/905/65df47cc264642868569dd8b4896589a.jpg)
我需要将以下两个工作查询转换为单个查询,但所有内容
我试着因为各种原因而死在我身上.我的最终结果是尝试列出所有
现有软件,并显示已安装的软件以及未针对要查询的特定PC安装的软件.对于已安装的软件,请列出名称,否则显示名称为NULL.我在where子句中尝试了一些子选择语句,它给了我一个没有错误的结果,但没有给出正确的结果.任何帮助表示赞赏.
qry1
SELECT device_software.sw_id
FROM Software_device LEFT JOIN Device ON Software_device.d_id = Device.d_id
WHERE Device.d_id = 1;
qry2
SELECT Software.name, Software.sw_id, qry1.sw_id
FROM software LEFT JOIN qry1 ON software.sw_id = qry1.sw_id;
设备表
------------------
| name | d_id |
------------------
| PC1 | 1 |
| PC2 | 2 |
| PC3 | 3 |
------------------
软件表
------------------
| name | sw_id |
------------------
| SW_a | A |
| SW_b | B |
| SW_c | C |
| SW_d | D |
------------------
Software_Device表(多对多)
------------------
| d_id | sw_id |
------------------
| 1 | A |
| 1 | B |
| 2 | A |
| 2 | B |
| 2 | C |
------------------
结果我正在寻找……
(PC1上已安装和未安装的软件)
---------------------------------
| Sotfware | pc_id | name |
---------------------------------
| SW_a | 1 | PC1 |
| SW_b | 1 | PC1 |
| SW_c | NULL | NULL |
| SW_d | NULL | NULL |
---------------------------------
我列出了mysql和sql标签,因为我觉得它不重要,但是万一它确实如此,我正在使用mysql.
解决方法:
如果RomanKonz的答案肯定很接近,只需将“where”移动到“on”,让左边的连接正常工作.
select software.name as Software,
device.d_id as pc_id,
device.name as name
from software
left join device_software
on device_software.sw_id = software.sw_id
and **device_software**.d_id = 1
left join device
on device_software.d_id = device.d_id
;
内容总结
以上是互联网集市为您收集整理的mysql – 使用WHERE选择LEFT / RIGHT JOIN并返回NULL全部内容,希望文章能够帮你解决mysql – 使用WHERE选择LEFT / RIGHT JOIN并返回NULL所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。