2014-03-30 57 views
0

我知道一個奇怪的標題,但我很難過。說,如果我搶到20行是這樣的:如何反向排序mysql數據

SELECT * FROM `articles` WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY)) ORDER BY `views` DESC LIMIT 20 

那麼我要告訴他們在背面,從最低到最高的「意見」,我該怎麼辦呢?我不能簡單地通過「ASC」命令,因爲這給了我錯誤的結果集。我想要最高的意見,然後再訂購從最低到最高的意見。

+1

與反轉排序 – zerkms

回答

1

採取Zerkms的想法:

Select * FROM (
    SELECT * FROM `articles` 
    WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY)) 
    ORDER BY `views` DESC 
    LIMIT 20 
) as reverse_article 
ORDER BY views ASC 

會讓你加倍排序

  1. 最高會被挑選(內選)

  2. 最低會被選中首先。

無論其

你也可以排序通過PHP首先讓你使用fetchall和計數()(這是你的最大大小的數組)下降到0落後運行數反轉(這是你的最高數組視圖)

你挑

0

爲此使用子查詢。子查詢選擇合適的20行,外部查詢,然後將它們排序,根據您的最終標準:

SELECT a.* 
FROM (SELECT a.* 
     FROM articles a 
     WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY)) 
     ORDER BY views DESC 
     LIMIT 20 
    ) a 
ORDER BY views ASC; 
0

這應該工作

SELECT * FROM (SELECT * FROM `articles` WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY)) ORDER BY `views` DESC LIMIT 20) t ORDER BY `views` ASC 
0

MySQL查詢:

(SELECT * FROM `articles` WHERE date >= UNIX_TIMESTAMP(DATE(NOW() - INTERVAL 30 DAY)) ORDER BY `views` DESC LIMIT 20) ORDER by `views` ASC; 
+2

相反undervoting的嵌套查詢,解釋你爲什麼不喜歡我的答案...... –

+0

那不是我,但有一個簡單的理由:你的回答是*太遠不是一個有效的mysql查詢。 – zerkms

+0

我在MySQL Workbench和我的PHP沙箱上測試過,並且它能正常工作。 =( –