我需要从下表中选择“捆绑包”条目,但前提是捆绑包存在,否则从每个发行版中选择音轨1。每个发行版都有一个唯一的“ cat_no”,这就是为什么我需要使用GROUP BY的原因。
SELECT * FROM cds
WHERE genre='rock'
GROUP BY cat_no
ORDER BY ABS(track) DESC
LIMIT 0,3
这是我尝试过的方法,但是当有该发行版的捆绑包时,有时我会进入轨道1。
表
genre cat_no track
rock 001 1
rock 001 2
rock 001 bundle
rock 002 1
rock 002 2
rock 002 bundle
rock 003 1
rock 003 2
最佳答案
尝试在分组之前对记录进行排序-
SELECT * FROM
(SELECT * FROM cds WHERE genre = 'rock' ORDER BY IF(track = 'bundle', 0, 1)) t
GROUP BY
cat_no;
关于mysql - MYSQL GROUP BY和ORDER BY与ABS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9682932/