SQLzoo音乐教程第4项:左连接还是内连接?

时间:2018-03-06 15:46:58

标签: sql join left-join

我正在做SQLzoo音乐教程问题4,可在此处找到(https://sqlzoo.net/wiki/Music_Tutorial)。我不确定是否应该使用left joininner join

问题提示"每个album显示titletrack的总数。"

我发现"正确"这个问题的解决方案是

select A.title, count(T.song)
from album as A inner join track as T
on A.asin = T.album
group by A.title

但我觉得基于这个问题,解决方案应该是

select A.title, count(T.song)
from album as A left join track as T
on A.asin = T.album
group by A.title

因为,album表中可能存在(实际上存在此问题)专辑标题,而track表中没有对应的专辑标题。并使用

select A.title, count(T.song)
from album as A left join track as T
on A.asin = T.album
group by A.title
having count(T.song) = 0

我找到了

title           count(T.song)
A Love Supreme        0
The Hits              0

这两张专辑在Track表格中没有对应关系。

1 个答案:

答案 0 :(得分:0)

你是对的。这是asin&专辑的标题,其中asin不是专辑中的专辑:

select A.asin, A.title
from album A left join track T
on A.asin = T.album
where T.album is null

asin        title
B000003N7A  Love Supreme
B000008O4G  The Hits