SQL示例:检索没有演出的musicianID?

时间:2010-01-13 18:50:13

标签: sql

假设您有两个表:

音乐家

  • musicianID(主键,int)
  • name(varchar)
  • instrument(varchar)

演出

  • GigID(主键,int)
  • musicianID(来自音乐家的外键)
  • location(varchar)

我如何检索没有演出的音乐家ID,即Gigs表中没有参考?

谢谢!

3 个答案:

答案 0 :(得分:4)

这可能比martin建议的查询更有效,因为它不使用子查询:

select musicianID
from musicians m
left join gigs g on g.musicianId = m.musicianID
where g.musicianId is null

答案 1 :(得分:2)

例如:

SELECT *
FROM Musicians m
WHERE NOT EXISTS (
    SELECT 1
    FROM Gigs g
    WHERE g.musicianID = m.musicianID
)

以下是EXISTS and NOT EXISTS上的(例如)MySQL文档。

答案 2 :(得分:2)

SELECT
   M.*
FROM Musicians M
  LEFT OUTER JOIN Gigs G
      ON G.musicianId = M.musicianID
WHERE G.musicianId IS NULL