首页 > 解决方案 > 显示带有左连接和 where not in 子句的数据

问题描述

我有 3 张桌子

    • idcluster
    • 名称簇
  1. 年级

    • idcluster
    • 陪审团
    • 观点
  2. 陪审团

    • 陪审团
    • 姓名陪审团

评委表会打分,并会被保存到成绩表。我想在 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 idjurynot 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)”时没有显示数据

标签: mysql

解决方案


把你的条件放在 on 子句而不是 where

SELECT cluster.namecluster, grade.point, grade.idjury
FROM `cluster` 
LEFT JOIN grade
ON cluster.idcluster = grade.idcluster 
and idjury NOT IN (1) 

推荐阅读