我有一个产品表,其中包含产品名称、两个产品属性字段和一个价格字段。
问题是我无法更改数据库的结构方式。每个属性字段都是等效的,可以使用任何一个。
基本上:
NAME | ATTRIBUTE_1 | ATTRIBUTE_2 | PRICE
Tshirt | red | small | 25
Tshirt | medium | red | 20
Tshirt | blue | medium | 30
Tshirt | blue | large | 16
不是最好的设置,但就是这样......
我想做一个将执行以下操作的查询:
首先展示所有的蓝色T恤并按价格排序 显示之后按价格排序的所有其他 T 恤
我在考虑按字段排序之类的东西,但由于颜色可以在属性 1 或 2 中,因此这些字段需要是等效的。
有什么建议吗?
最佳答案
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
,因此排序以降序排列将首先对具有蓝色属性值的行进行排序。
关于mysql按字段排序(有一个扭曲),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3514338/