我正在尝试在MySQL数据库中的phpMyAdmin中运行SQL查询,以获取在另一个表中没有相应记录的记录。
E.g。
**album**
id, name
**track**
id, album_id, name
我需要所有没有相对曲目记录的专辑记录。
我试过了
SELECT album.id
from album
WHERE album.id NOT IN (
SELECT track.album_id
FROM track
WHERE 1
GROUP BY track.album_id
)
但不幸的是,这会导致MySQL服务崩溃
我也试过
SELECT a.id FROM album a
INNER JOIN track t
ON a.id = t.album_id
WHERE t.id IS NULL
但这不能按预期工作(不返回结果)
答案 0 :(得分:12)
您可以使用EXISTS检查相关表格中是否缺少记录。
SELECT album.id
FROM album
WHERE NOT EXISTS (
SELECT *
FROM track
WHERE track.album_id = album.id
);
请参阅:http://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html
答案 1 :(得分:11)
SELECT a.id
FROM album a
LEFT JOIN track t ON a.id = t.album_id
WHERE t.id IS NULL