我有一个项目表。项目有 id,分数 1,分数 2。
我想选择 12 个已知项目(使用 WHERE id IN (....)
),并按分数对它们进行排序,该分数是 Score1 和 Score2 的排名之和。如果 12 个项目按分数排序,则排名是分数的位置。
如何在 mysql 中执行此操作?
编辑:
在 4 个答案之后,我发现解决方案可能比我预期的更复杂。所以让我以另一种方式问这个问题。
如果我使用select *, [calculation] from table where id IN (有序的id列表)
。我可以以某种方式使用 [calculation]
中原始有序 id 列表中每个 id 的位置吗?
最佳答案
在我的脑海中:
CREATE TEMPORARY TABLE t_1(score_1_rank INT AUTO_INCREMENT, id)
CREATE TEMPORARY TABLE t_2(score_2_rank INT AUTO_INCREMENT, id)
INSERT INTO t_1(id)
SELECT id
FROM items i
WHERE id IN ()
ORDER BY score_1
INSERT INTO t_2(id)
SELECT id
FROM items i
WHERE id IN ()
ORDER BY score_2
SELECT ...
FROM items i
INNER JOIN t_1 t1
ON t1.id = i.id
INNER JOIN t_2 t2
ON t2.id = i.id
ORDER BY t1.rank + t2.rank
我是否正确理解了您的请求?
关于Mysql - 按 2 级排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1097636/