显示带有左联接的数据,其中不包含子句

时间:2019-07-19 07:26:26

标签: mysql

我有3张桌子

  1. 集群

    • idcluster
    • 名称集群
  2. 成绩

    • idcluster
    • idjury
  3. 陪审团

    • idjury
    • namejury

陪审团表将给出一个分数,并将其保存到成绩表中。 我想在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

以及我希望显示群集数据的代码,其中群集数据尚未使用“ idjury不在其中”进行评估

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)”时,没有数据显示

2 个答案:

答案 0 :(得分:0)

将条件放在on子句中,而不是在哪里

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

答案 1 :(得分:0)

您应该在WHERE子句中添加OR idjury IS NULL

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