mysql - 从第一个表中获取不在第二个表mysql中的记录

标签 mysql sql join where-clause

我在这两个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

db<>fiddle demo

关于mysql - 从第一个表中获取不在第二个表mysql中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57234510/

相关文章:

mysql - 如何在mysql中查找 friend 的 friend

mysql - 将两个单独的 sql 查询组合成一个查询

sql - not null 在 oracle 中启用 novalidate 问题

mysql - 多表更新(MySQL)

mysql - Joomla 2.5 连接 3 个表

php - 数据库名称 PDO 问题

php - 使用 1 个图像按钮处理 id

Mysql select union错误

连接表的mysql公共(public)列标准

mysql - SELECT 结果以及列的表名