我有一个MySQL查询,从多个表中选择数据,然后下令基于如下一些任意标准的结果:MySQL的顺序排名为列
SELECT [columns] FROM (
SELECT *, COUNT(*) as `matches`
FROM [table1]
JOIN [table2] USING (id)
JOIN [table3] USING (id)
WHERE [criteria]
GROUP BY `id`
ORDER BY `matches` DESC
) AS `grouped`
ORDER BY (
(CASE WHEN [1st rank criteria] THEN 3 ELSE 0 END) +
(CASE WHEN [2nd rank criteria] THEN 2 ELSE 0 END) +
(CASE WHEN [3rd tank criteria] THEN 1 ELSE 0 END)
) DESC
LIMIT 100
这工作得很好,但我的问题是:我可以将排名分数显示为列?我已经着眼于尝试使用变量,但我对SQL很陌生,所以这些都超出了我的想象。
对不起,如果这是一个明显的问题,但非常感谢您的时间和协助。
完美!我没有意识到CASE可以按照这个顺序排列。非常感谢您的及时和有用的回复! – Superangel