我有艺术家的身份,我想知道这位艺术家发布的所有专辑。
MySQL结构
示例Mysql查询
SELECT album_name
FROM albums AS a,
tracks AS t,
produced AS p
WHERE p.produced_track = t.track_id
AND t.track_album = a.album_id
AND p.produced_artist = "17"
问题
由于一张专辑有很多曲目,我的结果会显示几张相同的专辑。为了制作唱片,我想要获得艺术家的所有专辑。 有没有办法在MySQL中做到这一点?
答案 0 :(得分:2)
只需使用SELECT DISTINCT
:
SELECT DISTINCT album_name
FROM albums AS a,
tracks AS t,
produced AS p
WHERE p.produced_track = t.track_id
AND t.track_album = a.album_id
AND p.produced_artist = "17"
应该这样做......
答案 1 :(得分:2)
您也可以使用子查询
,而不是检索太多行并删除重复项SELECT album_name
FROM albums AS a
WHERE album_id IN (SELECT t.track_album
FROM tracks t
JOIN produced AS p ON p.produced_track = t.track_id
WHERE p.produced_artist = 17)
您还应该习惯使用显式JOIN
语法而不是WHERE
子句中隐藏的隐式连接
答案 2 :(得分:1)
您应该尝试:SELECT DISTINCT album_name
FROM albums AS a,
tracks AS t,
produced AS p
WHERE p.produced_track = t.track_id
AND t.track_album = a.album_id
AND p.produced_artist = "17"