我有以下查询:
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 中运行时)会返回所有结果?
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
;
你在子查询中说limit 1
。因此,您只能获得 1 个轨道 ID,因此只有一个轨道。
因此对于一个播放列表,您的行数与曲目数一样多,或者您可以将曲目字符串拆分为临时表。查看MySQL:例如,将逗号分隔的列表拆分为多行或搜索"将字符串拆分为行"