我在这两个mysql表中有如下记录。
表-A
Question_No
1
2
3
4
5
表-B
Roll_No Question_No Ans_Option
1001 1 NULL
1001 2 D
1001 3 NULL
1002 1 C
1002 2 NULL
这里“NULL”这个词被明确地插入到 column 中,没有什么可混淆的。
如何通过mysql查询显示如下结果?
Questions not attempted by roll no 1001 are : 1, 3, 4, 5
Questions not attempted by roll no 1002 are : 2, 3, 4, 5
我试过下面的代码但没有工作
select distinct a.* from table_A a NATURAL LEFT JOIN table_B b where
b.Question_No IS NULL and b.Roll_No=1001;// where I am wrong here ? I have
not set any column as primary key , should I set?
非常感谢
最佳答案
当您将 WHERE
条件放在 LEFT OUTER JOIN
上时,它实际上与 INNER JOIN
相同:
select distinct a.*
from table_A a
NATURAL LEFT JOIN table_B b
where b.Question_No IS NULL
and b.Roll_No=1001; -- this condition makes it `NATURAL JOIN`
您可以将其重写为:
SELECT DISTINCT a.*
FROM table_A a
LEFT JOIN table_b b
ON a.Question_No = b.Question_No
AND b.Roll_No=1001
WHERE b.Ans_Option_No IS NULL
关于mysql - 从第一个表中获取不在第二个表mysql中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57234510/