mysql - 显示带有左连接和 where not in 子句的数据
问题描述
我有 3 张桌子
簇
- idcluster
- 名称簇
年级
- idcluster
- 陪审团
- 观点
陪审团
- 陪审团
- 姓名陪审团
评委表会打分,并会被保存到成绩表。我想在 idjury 的 where 子句中显示陪审团尚未评估的集群数据
例如,我尝试过使用简单的左连接,我有 1 个数据插入到成绩表中
idcluster | idjury | point
1 | 1 | 300
集群表
idcluster | namecluster
1 | cluster a
2 | cluster b
3 | cluster c
陪审团
idjury | namejury
1 | hary
2 | potter
以及我希望显示集群数据的这段代码,其中集群数据尚未使用“where idjury
not in”进行评估
SELECT cluster.namecluster, grade.point, grade.idjury
FROM `cluster`
LEFT JOIN grade
ON cluster.idcluster = grade.idcluster
WHERE idjury NOT IN (1) //how to display data clusters that have not been assessed by a jury table (by idjury)
所以这就是我想要的
idcluster | namecluster | point | idjury
2 | cluster b | null | null
3 | cluster c | null | null
不使用 where 子句时
idcluster | namecluster | point | idjury
1 | cluster b | 300 | 1
2 | cluster b | null | null
3 | cluster c | null | null
使用“WHERE idjury NOT IN (1)”时没有显示数据
解决方案
把你的条件放在 on 子句而不是 where
SELECT cluster.namecluster, grade.point, grade.idjury
FROM `cluster`
LEFT JOIN grade
ON cluster.idcluster = grade.idcluster
and idjury NOT IN (1)
推荐阅读
- rust - Rust 中闭包参数的生命周期问题
- windows - 打开 MiKTeX 和源和预览窗口拆分但不完全覆盖屏幕(Windows 10)
- google-compute-engine - 同时创建多个 GCE 虚拟机的脚本
- java - PostgreSQL timestamp without timezone 和 java.util.Date with timezone 的比较
- angular - Angular5 和 Bootstrap4 - 无法将最后一个菜单项向右对齐
- angular - 如何使用 ngx-translate 截断
- google-apps-script - 在管理目录中查找和阅读资源日历
- python - 为什么这个 Python 解决方案不是就地解决方案?
- xml - 从另一个节点 xslt 调用值
- javascript - 如何根据下拉值过滤/渲染项目?