2010-08-18 45 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