2010-08-18 42 views
3

我有一個產品名稱,兩個產品屬性字段和一個價格字段。mysql按字段排序(有捻)

問題是我無法改變數據庫的結構。每個屬性字段是相同的,可以使用。

基本上是:

NAME  | ATTRIBUTE_1 | ATTRIBUTE_2 | PRICE 
Tshirt | red   | small  | 25 
Tshirt | medium  | red   | 20 
Tshirt | blue  | medium  | 30 
Tshirt | blue  | large  | 16 

不是最好設置但是這是怎麼回事...

我想做一個查詢,將做到以下幾點:

顯示所有的藍色tshirts第一,並按價格排列 顯示所有其他的T恤訂購後的價格

我在想像按字段排序,但由於顏色可以屬於屬性1或屬性2,因此這些字段需要等同。

有什麼建議嗎?

回答

3
SELECT NAME, ATTRIBUTE_1, ATTRIBUTE_2, PRICE 
FROM products 
ORDER BY (ATTRIBUTE_1 = 'blue' OR ATTRIBUTE_2 = 'blue') DESC, PRICE 

(ATTRIBUTE_1 = 'blue' OR ATTRIBUTE_2 = 'blue')1如果是真的,如果0假,所以排序上以降序將有藍色的第一個屬性值對行進行排序。

+0

感謝您的回答。我投這個解決方案,因爲它更簡單一些。 – Enkay 2010-08-18 17:44:11

2
select name, attribute_1, attribute_2, price 
from Product 
order by 
    case 
     when ATTRIBUTE_1 = 'blue' or ATTRIBUTE_2 = 'blue' then 0 
     else 1 
    end, 
    price 
+0

感謝您的回答。我現在更瞭解情況! – Enkay 2010-08-18 17:43:53