SQL查询,以确定是否有任何美工人员未与曲目关联
请帮助回答这个问题: 编写适当的SQL查询,以确定是否有任何美工人员未与曲目关联。我必须使用SELECT、JOIN和WHERE子句。 样本结果:SQL查询,以确定是否有任何美工人员未与曲目关联,sql,sql-server,join,subquery,Sql,Sql Server,Join,Subquery,请帮助回答这个问题: 编写适当的SQL查询,以确定是否有任何美工人员未与曲目关联。我必须使用SELECT、JOIN和WHERE子句。 样本结果: ARTIST_ID ARTIST_NAME ---------------------- AR011 Elvis Presley 我的桌子是这样的: ARTIST_ID ARTIST_NAME TRACK_ID TRACK_NAME TRACK_DURATION --------------------------------
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
我相信您可以使用
notexists
来测试ALBUM\u tracks
表中是否存在曲目
select *
from ARTISTS a
where not exists(select 1
from ALBUM_TRACKS tr
where a.ARTIST_ID=tr.ARTIST_ID);
根据您在评论中发布的DB结构,应该是这样的:
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是一个更好的选择。您可以使用左联接来获得请求的结果
SELECT a.*
FROM artists a
LEFT OUTER JOIN album_tracks t ON a.artist_id =t.artist_id
WHERE t.artist_id IS NULL
也许需要提供更多的数据和更好的数据样本。根据这张截图,每个艺术家都有一条轨迹。你使用的是哪种关系数据库管理系统?请提供您的输入和输出数据。这里的大多数人希望样本表数据和预期结果是格式化文本,而不是图像。我看不懂那微小的图像文字。帮助你变得容易@贾尔赫,好的,我会记住的。我是新来的,也不熟悉编码:)请不要通过破坏你的帖子为别人做更多的工作。通过在Stack Exchange网络上发布,您已授予Stack Exchange在下不可撤销的权利,以分发该内容(即,无论您未来的选择如何)。根据堆栈交换策略,帖子的非破坏版本是分发的版本。因此,任何故意破坏行为都将恢复原状。如果您想了解有关删除帖子的更多信息,请参阅:谢谢。有效:)