2010-09-05 176 views
14

欢迎,“按顺序排列”按相反顺序排列?

我想知道是否有可能扭转返回的数据排序“顺序desc”但我想要的数据以相反的顺序。

例如,我有表值

ID 
1 
2 
3 
4 

,我也

订购ID ASC LIMIT 3 我

1 
2 
3 

当我通过ID DESC极限做订单3 我收到

4 
3 
2 

我想有

3 
2 
1 

所以我想通过ASC但翻领结果订购。 我一直在使用array_reverse在PHP端做这件事,但今天我想问你。 Maybye我错了,我只能在Mysql中做到这一点。 问候

+1

可能的[B est的方式来从结果集中使用mysql获取最后4行](http://stackoverflow.com/questions/2980220/best-way-to-fetch-last-4-rows-from-a-result-set-using -mysql) – 2010-09-05 18:08:18

回答

5

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

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

你可以使用一个外部SELECT颠倒顺序:

SELECT * 
FROM (
    SELECT … 
    ORDER BY id ASC 
    LIMIT 3 
) sub 
ORDER BY id DESC 
25
SELECT * 
FROM (
    SELECT ... 
    FROM ... 
    ORDER BY ID ASC 
    LIMIT 3 
) AS sq 
ORDER BY ID DESC 

把它看成分两步工作。首先执行内部查询:选择3个ID最低的记录。然后在外部查询中按降序对它们进行排序。

+0

这很好。 – marc 2010-09-05 17:54:58

+0

老兄,你太棒了! – user3284463 2015-11-25 16:36:56

+0

此查询如何工作!您能否请解释或提供此链接 – user3284463 2015-11-25 16:39:10

4

不,你没有错。任何合理的数据量都没有区别。 Array_reverse是好的。
这不是你必须担心的事情。只要使用任何你喜欢的更多 - 这对可读性或其他主观原因

2

你可以用一个子查询做到这一点:

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

资源:

+0

资源页面未找到:( – user3284463 2015-11-25 16:39:43