1

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

SELECT * FROM Titles WHERE ArtistID is null;

它产生一个空集。

有问题的表格如下所示:

艺术家

ArtistID、ArtistName、城市、地区、国家、EntryDate

标题

TitleID、ArtistID、Title、StudioID、UPC、流派、

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

4

4 回答 4

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
于 2013-10-26T19:42:12.990 回答
0

既然上面的查询产生了一个空集,这是否意味着所有艺术家都记录了标题?

不,这意味着所有作品都有关联的艺术家。

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

SELECT Artist.* 
FROM Artist 
WHERE ArtistId NOT IN (SELECT DISTINCT ArtistId FROM Titles)
于 2013-10-26T19:43:31.140 回答
0

尝试这样的事情:

SELECT * 
FROM Artists
WHERE artistID NOT IN (
    SELECT artistID  
    FROM Titles
    );
于 2013-10-26T19:42:26.177 回答
0
SELECT Artists.* 
FROM Artists 
WHERE Artists.ArtistID NOT IN (SELECT Titles.ArtistID FROM Titles)

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

于 2013-10-26T19:46:41.750 回答