“按顺序排序”顺序相反?

时间:2010-09-05 17:46:24

标签: php sql mysql sql-order-by

欢迎,

我想知道是否可以在“按顺序排序”排序时反转返回的数据,但我希望这些数据的顺序相反。

例如,我得到了值为

的表格
ID
1
2
3
4

我做了

按照ASC LIMIT 3的顺序排序 我得到了

1
2
3

当我根据ID DESC限制3进行排序时 我得到

4
3
2

我想

3
2
1

所以我想通过ASC订购但反转结果。 我一直在使用array_reverse在PHP端做这个,但今天我想问你。 Maybye我错了,我只能在Mysql中做到这一点。 此致

5 个答案:

答案 0 :(得分:25)

SELECT * 
FROM (
  SELECT ... 
  FROM ... 
  ORDER BY ID ASC 
  LIMIT 3
) AS sq 
ORDER BY ID DESC

将其视为分两步完成。首先,它执行内部查询:选择3个ID最低的记录。然后在外部查询中按降序对它们进行排序。

答案 1 :(得分:5)

您可以使用子查询获取前三行,然后在外部查询中反转这些行的顺序:

SELECT *
FROM
(
    SELECT *
    FROM yourtable
    ORDER BY ID
    LIMIT 3
) T1
ORDER BY ID DESC

答案 2 :(得分:4)

不,你没错。任何合理数量的数据都没有区别。 Array_reverse没问题。
这不是你必须过分担心的事情。只是使用你喜欢的任何东西 - 出于可读性或其他主观原因

答案 3 :(得分:2)

您可以使用子查询执行此操作:

SELECT * FROM
    (SELECT * FROM myTable ORDER BY idMyTable LIMIT 0, 3) AS r
ORDER BY r.idMyTable DESC

资源:

答案 4 :(得分:0)

您可以使用外部SELECT来颠倒顺序:

SELECT *
FROM (
    SELECT …
    ORDER BY id ASC
    LIMIT 3
) sub
ORDER BY id DESC