我有一个基于total_score字段的查询来获取前50个条目。从这些前50名中,我需要能够按他们的任何其他领域来排序。我尝试使用多个ORDER语句,但结果集从未改变。以下是我的查询:
SELECT
e.id, e.name , e.total_score
FROM
entry e
ORDER BY
e.total_score DESC, e.name ASC我想我明白为什么这不能满足我的需要,所以我想我的问题是我怎样才能实现我的目标?最后,我总是需要50个具有最高total_score的条目,但是这个选择应该由任何其他字段来排序。
如果这在MySQL中是不可能的,我可以用PHP来完成,但是我宁愿让DB处理这个问题。
注意:我在MySQL 5 DB之上使用Doctrine1.2。
谢谢!
发布于 2011-04-08 22:13:40
ORDER,当与多个列一起使用时,只在前面的列中使用tie的情况下才使用后续列。
尝试使用嵌套查询
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)发布于 2011-04-08 22:15:30
您需要一个子查询
select * from (
select ..... order by .... limit 50
) as t
order by something_elsehttps://stackoverflow.com/questions/5601299
复制相似问题