我有一组规则来对MySQL和amp;sql服务器:
- 按
qty
第一次排序-从最高到最低 - 以上排序结果再次按
storage
排序,先放2,然后值>2,而不是<2 - 以上排序结果再次按
price
排序-从最低到最高
我写了以下条款:
ORDER BY table.qty DESC
ORDER BY FIELD (table.storage, =2, >2, <2)
ORDER BY table.price ASC
组合对我来说意味着来自数据:
qty,storage,price
0,0,0
1,1,10
1,2,22
1,3,10
2,3,10
1,2,9
我会得到:
qty,storage,price
2,3,10
1,2,9
1,2,22
1,1,10
1,3,10
0,0,0
我需要两件事的帮助:
1-2nd子句返回错误,我想这是因为错误使用了运算符:
SQLSTATE[42000]:语法错误或访问冲突:1064您有SQL语法错误;查看与您的MySQL服务器版本的正确语法要在'>2附近使用,<2)
2-如何将这些条款链接在一起
我真的不知道该怎么做,但让下面的伪查询来演示它:
SELECT
*
FROM
table
ORDER BY
table.qty DESC
AND
ORDER BY FIELD (
table.storage, =2, >2, <2
)
AND
ORDER BY
table.price ASC
对于MSSQLServer,您可以使用
SELECT
*
FROM
table
ORDER BY
table.qty DESC,
CASE
WHEN table.storage = 2 THEN 1
WHEN table.storage > 2 THEN 2
WHEN table.storage < 2 THEN 3
END ASC,
table.price ASC
CASE(Transact-SQL)