2010-09-05 322 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