2011-05-09 84 views
4

我目前構建ID數組和查詢使用該陣列內爆像這樣:問題與ORDERING查詢結果

$sql = "SELECT * FROM item_bank_tb WHERE item_id IN(" . implode(',', $ids) . ")";

陣列$ids以這樣的方式構成的,即ID被以特定的順序。但是,這個查詢的結果不是按照這個順序。我在猜測,因爲他們都在一個查詢中,結果以他們所在的順序(升序)顯示。

有沒有解決這個得到的一種方式?

許多感謝(不是包括,我可以爲了通過字段之外)。

+0

與質疑爲何不你想使用order by子句嗎? – Eineki 2011-05-09 21:12:01

回答

8

看看這個例子。你必須使用field()函數。

SELECT * FROM item_bank_tb WHERE item_id IN(1,3,2) 
order by field(item_id,1,3,2) 

這樣你就可以按照你想要的順序得到你的物品。

+0

夢幻般的人在這裏!謝謝 – buymypies 2011-05-09 21:16:36

+0

很高興我能幫助你。 :) – 2011-05-09 21:20:10

0

嚴重的是,如果你想在一個特定的順序返回一個SQL查詢的行有什麼用添加ORDER BY item_id

+2

他們是在「特定」的順序,而不是簡單的asc或desc。 – Notinlist 2011-05-09 21:12:30

+0

然後,你既可以寫一種在任何PHP排序算法或者我想,在你的MySQL聲明,我沒有在MySQL基於排名算法幾個月前百分:)這是比較活潑的! – James 2011-05-09 21:14:02

0

的問題,必須在查詢中包含的ORDER BY

+1

你也錯過了:-D – Notinlist 2011-05-09 21:13:21

0

使用ORDER BY的結果排序方式。你可以有ORDER BY DESC(從高到低遞減)或ORDER BY ASC(從低到高遞增)。

例如:

SELECT colName,colEmail FROM tblUsers ORDER BY id ASC 

在這裏閱讀更多:

http://www.w3schools.com/sql/sql_orderby.asp

0

你可以構造一個 「訂貨人」 temporay表(如果它沒有太多的數據),而不是ID陣列你可以插入到臨時表中的兩個值:ID,訂單
再加入,然後「按訂單順序」

+0

要小心如何處理來自同一會話的不同查詢。 – 2011-05-09 21:18:26