sql选择在第二个表中没有关系的记录

时间:2014-03-24 21:45:09

标签: mysql sql

我正在尝试在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

但这不能按预期工作(不返回结果)

2 个答案:

答案 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