在mysql中,如果我有一条引用另一条记录的id的记录。例如
Table 1
id bigint
tabe2ref bigint
Table 2
id bigint
table2ref只引用Table2.id 有没有办法列出表1中引用表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 (第一栏,第二行)