2013-02-21 35 views
0

我想基於另一個查詢來排序結果。這裏是我的查詢:如何使用帶有ORDER BY子句的查詢結果?

"SELECT * FROM red_table INNER JOIN blue_table ON red_table.ID = blue_table.ID"; 

我想使用來自另一個查詢結果添加ORDER BY

"SELECT date FROM blue_table WHERE status = 'ready'"; 

所以最終會是這樣的:

"SELECT * FROM red_table INNER JOIN blue_table ON red_table.ID = blue_table.ID ORDERY BY (SELECT date FROM blue_table WHERE status = 'ready')"; 

我如何去做?或者可能嗎?

UPDATE: 我知道我可以只使用ORDER BY blue_table.datedate列包含日期值。 blue_table是一種元數據表。所以我需要將date列中的值與status列進行匹配,因此我只獲取日期值並將其用於排序。也許我不應該把它稱爲欄date,但我希望你明白我的觀點。

+1

如果status = ready,您想按日期排序?如果它不準備好呢? – 2013-02-21 00:13:29

+0

WHERE並不意味着任何順序。你能更好地解釋你實際上想要做什麼嗎? – 2013-02-21 00:16:16

+0

@ExplosionPills是的。那麼有狀態!= ready的記錄應該不包括在內。 – adredx 2013-02-21 00:17:17

回答

1

也許你的意思是這樣的?您必須在選擇中添加其他列名稱

SELECT status, date 
    FROM red_table INNER JOIN blue_table ON red_table.ID = blue_table.ID 
    GROUP BY 1, 2 
+0

我更新了我的問題,請你再讀一遍。謝謝! – adredx 2013-02-21 00:33:46

+0

您可以使用http://sqlfiddle.com/創建您的架構並添加一些示例數據嗎? – Andrew 2013-02-21 00:39:15

0
SELECT * 
FROM red_table 
INNER JOIN blue_table ON red_table.ID = blue_table.ID 
WHERE blue_table.status = 'ready' 
ORDER BY blue_table.date 

注意,如果blue_table不包含連接條件的匹配,從red_table什麼都不會顯示。

相關問題