SQL查询以确定是不是有任何与曲目无关的艺术家[关闭]

Posted

技术标签:

【中文标题】SQL查询以确定是不是有任何与曲目无关的艺术家[关闭]【英文标题】:SQL query to determine if there are any artists that are not associated with a track [closed]SQL查询以确定是否有任何与曲目无关的艺术家[关闭] 【发布时间】:2020-09-02 13:52:39 【问题描述】:

请帮助解决这个问题: 编写适当的 SQL 查询以确定是否存在与曲目无关的艺术家。我必须使用 SELECT、JOIN AND WHERE 子句。 样本结果:

ARTIST_ID  ARTIST_NAME
----------------------
AR011      Elvis Presley

这就是我的桌子的样子:

ARTIST_ID  ARTIST_NAME    TRACK_ID  TRACK_NAME  TRACK_DURATION
------------------------------------------------------------
AR001      Marshmallow    TR001     Silence     3.5
AR002      Khalid         TR001     Silence     3.5
AR003      The Script     TR001     Silence     3.5
AR004      Sam Smiths     TR001     Silence     3.5
AR005      Nick Jonas     TR001     Silence     3.5
AR006      Goldfish       TR001     Silence     3.5
AR007      Method         TR001     Silence     3.5
AR008      Justin Bieber  TR001     Silence     3.5
AR009      BloodPop       TR001     Silence     3.5
AR010      Pink           TR001     Silence     3.5
AR011      Elvis Presley  TR001     Silence     3.5
AR001      Marshmallow    TR002     Rain        4.0
AR002      Khalid         TR002     Rain        4.0
AR003      The Script     TR002     Rain        4.0

【问题讨论】:

或许需要提供更多数据和更好的数据样本。根据那张截图,每个艺术家都有一首曲目。 您使用的是哪个关系数据库管理系统?请提供您的输入和输出数据。 这里的大多数人都希望样本表数据和预期结果为格式化文本,而不是图像。而且我无法阅读那个微小的图像文本。助您轻松! @jarlh,好的,我会记住的。我是新来的,也是编码新手 :) 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work? 【参考方案1】:

根据您在 cmets 中发布的数据库结构,它应该是这样的:

SELECT a.ARTIST_ID,a.ARTIST_NAME
FROM ARTISTS AS a 
LEFT OUTER JOIN TRACK_ARTISTS AS ta ON ta.ARTIST_ID = a.ARTIST_ID
WHERE ta.ARTIST_ID IS NULL

这假设您需要使用 JOIN 子句,正如您在问题中所述。

如果连接表不需要输出,例如在这种情况下,使用 EXISTS 是一个更好的选择。

【讨论】:

谢谢。它有效:)【参考方案2】:

我相信您可以使用NOT EXISTS 来测试ALBUM_TRACKS 表中是否存在轨道。

select * 
from ARTISTS a
where not exists(select 1
                 from ALBUM_TRACKS tr
                 where a.ARTIST_ID=tr.ARTIST_ID);

【讨论】:

【参考方案3】:

您可以使用 LEFT JOIN 来获得您请求的结果

SELECT a.*
FROM artists a
LEFT OUTER JOIN album_tracks t ON a.artist_id =t.artist_id
WHERE t.artist_id IS NULL

【讨论】:

以上是关于SQL查询以确定是不是有任何与曲目无关的艺术家[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

SQL:多个嵌套聚合函数

Spotify:曲目的受欢迎程度如何确定? [关闭]

返回热门曲目 Spotify API

使用 Spotify Web API 播放曲目

如何在 Spotify 上获取艺术家的所有歌曲?

使用 spotify-web-api-js 在 javascript 中获取 Spotify 艺术家的热门曲目