我有一个查询来根据total_score
字段获取前50个条目。从这些前50名,我需要能够通过他们的任何其他领域订购它们。我尝试使用多个ORDER BY语句,但结果集永远不会改变。这是我的疑问:
SELECT
e.id, e.name , e.total_score
FROM
entry e
ORDER BY
e.total_score DESC, e.name ASC
我想我理解为什么这不能满足我的需要,所以我想我的问题是如何实现我的目标?最后,我总是需要具有最高total_score
的50个条目,但是此选择应该可以由任何其他字段订购。
如果在MySQL中无法做到这一点,我可以用PHP来做,但我宁愿让DB处理这个。
注意:我在MySQL 5 DB之上使用Doctrine 1.2。
谢谢!
答案 0 :(得分:3)
ORDER BY,当与多列一起使用时,仅在以前的列中使用后续列。
尝试使用嵌套查询
SELECT * FROM(
SELECT TOP 50
e.id, e.name , e.total_score, e.(YOURFIELD)
FROM
entry e
ORDER BY
e.total_score DESC ) x ORDER BY x.(YOURFIELD)
答案 1 :(得分:3)
你需要一个子查询
select * from (
select ..... order by .... limit 50
) as t
order by something_else