【发布时间】:2021-09-25 18:22:07
【问题描述】:
我在做一个 SQL 练习题,要求为艺术家“Audioslave”创建专辑标题和单价列表,并找出返回的记录数。
最初,我使用内部连接来检索列表,实际上得到了正确答案(返回 40 条记录)。代码如下:
select a.Title, t.UnitPrice
from albums a
inner join tracks t on t.AlbumId = a.AlbumId
inner join artists ar on ar.ArtistId = a.ArtistId
where ar.Name = 'Audioslave';
虽然我完成了这个问题,但我很想尝试使用嵌套子查询来解决这个问题,并尝试首先从曲目中检索 AlbumId 和 UnitPrice。我得到了正确的答案,但不是正确的列表(问题要求专辑标题而不是专辑 ID)。代码如下:
select AlbumId, UnitPrice
from tracks
where AlbumId in (
select AlbumId
from albums
where ArtistId in (
select ArtistId
from artists
where Name = 'Audioslave'));
为了解决列表的问题,我尝试结合前面的代码。但是,我返回的记录数量完全不同 (10509)。
select a.Title, t.UnitPrice
from albums a
inner join tracks t
where a.AlbumId in (
select AlbumId
from albums
where ArtistId in (
select ArtistId
from artists
where Name = 'Audioslave'));
我不明白我对最后一个代码做错了什么...任何帮助将不胜感激!还有,写的太多了,只是想把自己的思路表达清楚。
【问题讨论】:
-
inner join [...]on[...]
标签: sql sqlite subquery inner-join