此查询返回多行:
SELECT T.Title FROM Titles T WHERE T.ArtistID =
(SELECT A.ArtistID FROM Artists A WHERE A.Country = "USA");
是因为它是暧昧的吗?
答案 0 :(得分:2)
不,这是因为美国有不止一位艺术家。
你想要什么?所有作者在美国写的标题?或者一个特定作者的所有标题?
如果您想要在美国撰写作者的所有作品,
Select title from Titles
Where ArtistId In (Select ArtistID From artists
where Country = 'USA')
或
Select title from Titles t
join Artists a
On a.ArtistId = t.ArtistId
Where a.Country = 'USA'
如果您想要一个特定作者的标题,您需要指定您想要标题的特定作者...
答案 1 :(得分:0)
这意味着你有多个艺术家,国家='美国'
你可以像这样修复它,只返回来自美国任何艺术家的任何标题
SELECT T.Title FROM Titles T WHERE T.ArtistID =
(SELECT TOP 1 A.ArtistID FROM Artists A WHERE A.Country = "USA");
如果你想要与美国艺术家的所有头衔使用JOIN
SELECT T.Title FROM Titles T
JOIN Artists A ON T.ArtistID = A.ArtistID
WHERE A.Country = "USA"
或
SELECT T.Title FROM Titles T WHERE T.ArtistID in
(SELECT TOP 1 A.ArtistID FROM Artists A WHERE A.Country = "USA");
答案 2 :(得分:0)
你的问题很模糊。没有看到数据,我可以说你为什么有两行。
有多少ArtistIDs拥有美国? 单独运行子查询,查看它返回的ID数量以及哪些ID。
那么这些ArtistID出现在Titles表中的次数。我的猜测不止一个。