mysql在表中查找引用不存在的记录的记录

时间:2015-02-08 12:59:46

标签: mysql

在mysql中,如果我有一条引用另一条记录的id的记录。例如

Table 1
id          bigint
tabe2ref    bigint

Table 2
id          bigint

table2ref只引用Table2.id 有没有办法列出表1中引用表2中记录不存在的记录的所有记录?

2 个答案:

答案 0 :(得分:2)

如果您也想要来自table2的数据,请使用LEFT JOIN作为dognose的答案。如果您只想要table1中的数据,请使用子查询,如下所示:

SELECT * FROM table1 WHERE table2ref NOT IN (
    SELECT id FROM table2
)

基本上,这会读取"从表1中获取所有内容,并减去table2ref在table2中所有行中的所有行。"

答案 1 :(得分:0)

您正在寻找LEFT JOIN - 表2中的条目不存在的所有内容在加入后null都会table2.id

SELECT 
    table1.id, table1.table2ref, table2.id 
FROM  
    table1 
LEFT JOIN 
    table2 
ON 
    table1.table2ref = table2.id
WHERE
   ISNULL(table2.id) -- only those records with missing reference.

另见:http://giannopoulos.net/wp-content/uploads/2013/05/BHVicYICMAAdHGv.jpg (第一栏,第二行)