我有以下查询:
SELECT TrackID, Name, Artist, Album, TotalTime, TrackNumber, TrackCount
FROM tracks
WHERE TrackID IN (SELECT Tracks FROM playlists
WHERE ID='f8ad830c-e2d6-11e1-99d7-00132094'
LIMIT 1)
ORDER BY Artist, Album, TrackNumber
执行它返回'tracks'表中的第一行,以包含从子查询返回的任何结果。截至目前,子查询返回:
41646,41696,41698,41700,41702,41704,41706,41708,41710,41712
当我将从子查询返回的上述值放入原始查询时,代替子查询,它将返回我期望的所有行。
为什么子查询会将返回的结果限制为第一个结果,但是将子查询替换为返回的结果(在PHPMyAdmin中运行时)会返回所有结果?
答案 0 :(得分:2)
SELECT TrackID, Name, Artist, Album, TotalTime, TrackNumber, TrackCount
FROM tracks
WHERE FIND_IN_SET(TrackID
, (SELECT Tracks
FROM playlists
WHERE ID='f8ad830c-e2d6-11e1-99d7-00132094'
LIMIT 1
)
) > 0
ORDER BY Artist, Album, TrackNumber
;
答案 1 :(得分:1)
您在子查询中说limit 1
。因此,您只能获得1个trackid,因此只能获得一个音轨。
您可以将曲目分成多行,因此对于一个播放列表,您可以拥有与曲目一样多的行,或者您可以将曲目字符串拆分为临时表。例如,查看MySQL: Split comma separated list into multiple rows或搜索“将字符串拆分为行”