2010-03-01 61 views
4

此SQL查詢爲我提供了我想要的結果;不過,我想用一個不同的列排序結果:使用PHP/MySQL運行查詢,然後按另一列重新排序結果

SELECT * 
FROM post 
    INNER JOIN account ON post.account_id = account.account_id 
WHERE post_id > new 
ORDER BY post_date 
ASC LIMIT 10; 

我不能簡單地改變ORDER BY post_date ASCORDER BY post_id DESC,而實際上爲了將在查詢我想要的方式...它會給我的錯10篇文章。

我只是想拿確切結果上面的查詢,然後重新排序結果由post_id
如果可能的話,我想用SQL來做到這一點,如果不是的話,我可以通過將結果添加到反轉的新數組中來排序結果。

+0

您的查詢失敗,返回MySQL錯誤1060:複製,因爲兩個表中的'account_id'現有的列名。 – 2010-03-01 22:21:14

+0

它的確如此,我對數據庫進行了一些更改,現在它們都像魅力一樣工作,謝謝指出! – 2010-03-01 22:38:31

回答

6

使用子查詢來重新排序:

SELECT * FROM (
    SELECT * 
    FROM post 
    INNER JOIN account ON post.account_id = account.account_id 
    WHERE post_id > neww 
    ORDER BY post_date ASC LIMIT 10; 
) ORDER BY post_id 
+0

感謝工作就像一個魅力,我不能相信我一直在尋找2天這個:(... – 2010-03-01 22:28:51

+0

謝謝,我認爲這將是我的方式去與自己的問題(在SQL Server 2k8上)。你已經爲我確認了。+1 – sholsinger 2010-09-24 15:42:51

+0

這個查詢缺少AS,應該是...)AS x ORDER BY post_id。請參閱https://dev.mysql.com/doc/refman/5.7/en/from-clause-subqueries.html – Mike 2016-07-28 16:23:58

4

使用子查詢:

SELECT * FROM (
    SELECT * 
    FROM post 
    INNER JOIN account 
    ON post.account_id = account.account_id 
    WHERE post_id > neww 
    ORDER BY post_date ASC 
    LIMIT 10) AS T1 
ORDER BY post_id DESC 
+0

+1這就是我要做的 – 2010-03-01 22:30:16

+0

哇,注意這裏發生的競爭狀況。 (都發佈於3月1日22:13)雖然兩個答案都是正確的,但只有一個人可以得到「正確的」答案。我覺得很有意思的是,Mark的回答將子查詢命名爲「T1」,然後不會引用它。 – sholsinger 2010-09-24 15:45:38

+0

我嘗試了兩種,但這對我有用 – 2013-02-18 01:02:54

相關問題