我想在我有两个艺术家的地方得到歌曲id。这是表的样子
| 歌曲ID|艺术家ID|
| - -|- -|
| 2000年。|五千|
| 2001年的报告。|小行星5001|
| 2002年的报告。|五千|
| 2002年的报告。|小行星5001|
这是目前为止我的代码
SELECT SONG_ID
FROM SONG_ARTIST
WHERE ARTIST_ID = '5000' and '5001'
这给了我两首歌,当我只想要一个输出,这是2002年,但它给了我2001年和2002年作为输出。我知道它的东西做在哪里子句,但不能弄清楚。
1条答案
按热度按时间lskq00tm1#
你说得对-问题出在where子句上。
当前代码:
您永远不要指定'5001'(例如
ARTIST_ID = '5001'
,而不仅仅是'5001'
;但是这并不能解决问题,每行数据只能有一个ARTIST_ID
;例如,第一行具有| 歌曲标识|艺术家标识|
| - -|- -|
| 二○ ○ ○年|五千|
它只有一个ARIST_ID。如果where子句是
ARTIST_ID = '5000' and ARTIST_ID = '5001'
,则无法取回数据,因为ARTIST_ID只能是一个条目。根据您的评论,每行数据只有一个歌曲ID和一个艺术家ID。因此,假设您的数据如下所示:
| 歌曲标识|艺术家标识|
| - -|- -|
| 二○ ○ ○年|五千|
| 二OO一年|小行星5001|
| 二OO二年|五千|
| 二OO二年|小行星5001|
您可以使用子查询将数据分割成两个数据表,然后寻找相符的配对。例如:
如果愿意,您也可以稍微修改一下输出。例如,如果您希望数据看起来像这样:
| 歌曲标识|艺术家标识|
| - -|- -|
| 二○ ○ ○年|5000、5001|
您可以将最后一个查询更改为: