MySQL Query生成空集

时间:2013-10-26 19:39:30

标签: mysql sql

如何显示未录制任何标题的所有艺术家的姓名?如果我首先运行以下查询:

SELECT * FROM Titles WHERE ArtistID is null;

它产生一个空集。

有问题的表格如下:

艺术家

ArtistID,ArtistName,City,Region,Country,EntryDate

标题

TitleID,ArtistID,Title,StudioID,UPC,类型,

艺术家或标题没有空记录,例如,每条记录都有一些数据。由于上面的查询产生一个空集,这是否意味着所有艺术家都有录制的标题?

4 个答案:

答案 0 :(得分:2)

我认为您正在寻找以下内容:

SELECT ArtistName FROM Artists WHERE NOT ArtistID IN (SELECT t.ArtistID FROM Titles t)

另一种选择,可能会更快但读起来有点困难:

SELECT ArtistName FROM Artists LEFT JOIN Titles ON Titles.ArtistID = Artists.ArtistID WHERE TitleID IS NULL

答案 1 :(得分:0)

尝试这样的事情:

SELECT * 
FROM Artists
WHERE artistID NOT IN (
    SELECT artistID  
    FROM Titles
    );

答案 2 :(得分:0)

  

由于上面的查询产生一个空集,这是否意味着所有   艺术家有唱片吗?

不,这意味着所有图书都有相关的艺术家。

要获得没有任何头衔的艺术家,您必须执行以下操作:

SELECT Artist.* 
FROM Artist 
WHERE ArtistId NOT IN (SELECT DISTINCT ArtistId FROM Titles)

答案 3 :(得分:0)

SELECT Artists.* 
FROM Artists 
WHERE Artists.ArtistID NOT IN (SELECT Titles.ArtistID FROM Titles)

这应该有效。它可以用其他方式编写,但这应该足够了。