2012-02-13 26 views
0

我有一個MySQL表像這樣的(這是一個例子):的MySQL結果首先顯示的一些產品,然後剩下的

| ID | Product name | Price | TopProduct | 
| 01 | Product 001 | 10.00 |  1  | 
| 02 | Product 002 | 15.00 |  0  | 
| 03 | Product 003 | 20.00 |  1  | 
| 04 | Product 004 | 10.00 |  0  | 

TopProduct是用戶管理系統上設置一個標誌。

具有標誌(TopProduct)設置爲1時,首先應在名單上,然後出現的產品,查詢後給我所有的標記,它會再展由「ID訂購的其他產品「

所以最終的結果我想有這樣的名單:

  • 產品003
  • 產品001
  • 產品004
  • 產品002

的問題是,我應該如何把我的查詢或查詢? 對此有何想法?

+1

到目前爲止,您對文檔的閱讀內容是什麼?或者你的MySQL書?這是非常基本的東西:/ – 2012-02-13 08:13:17

回答

0

你可以做這樣的事情

SELECT ID, ProductName, Price FROM product ORDER BY TopProduct, ID DESC 

它將首先由TopProduct訂購,然後再次根據ID

+0

這工作相當不錯。 其實是一個新手的錯誤,不知道我可以ORDER BY多個字段。 – 2012-02-13 08:18:31

+0

祝你好運的朋友。 – 2012-02-13 08:20:03

1

您可以使用此:

ORDER BY `TopProduct`, `ID` DESC 
+0

謝謝,像一個魅力工作 – 2012-02-13 08:18:41

0

這可以解決這樣說:

select ProductName from table 
order by TopProduct desc 

無論其,這樣只會條件下的工作,TopProduct的最大值爲1。我的意思是,如果你可以在任何行中用2標記該列,那麼這行將不起作用,因爲該行將首先出現。是這樣嗎?

如果是這樣,這是查詢到,無論在列的任何其他數量的存在,所有的1起初排序:

select ProductName from table 
order by if(TopProdct = 1, 1, 0) desc 
+0

謝謝,這個解決方案也工作,但我覺得它更簡單,只是多個訂單...謝謝 – 2012-02-13 08:19:48

相關問題