我正在运行以下 SQL 查询:
SELECT * FROM cms_albums WHERE id IN (SELECT album_id FROM cms_albums_collections WHERE collection_id = 1 ORDER BY position ASC)
现在,假设内部查询
SELECT album_id FROM cms_albums_collections WHERE collection_id = 1 ORDER BY position ASC
返回以下内容:
album_id
"4"
"2"
这就是我想要的顺序。 然而,整个查询将返回:
id name
"2" "Second album"
"4" "First album"
我假设这是因为“cms_albums”表中的条目按此顺序排列。 有什么方法可以按照内部查询给出的顺序获得总体结果吗?
谢谢
最佳答案
尝试这个变体:
SELECT DISTINCT c.*
FROM cms_albums c
JOIN cms_albums_collections cc
ON c.id = cc.album_id
WHERE cc.collection_id = 1
ORDER BY
cc.position ASC
IN 列表中的项目顺序会丢失,而是形成一个联接,然后您可以应用您想要的顺序。
关于sql - 在 mySQL 的 WHERE IN 子句中保持排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1698722/