我目前有这个mysql语句:
SELECT * FROM tablename
WHERE column1 = 'yes'
ORDER BY
CASE column2 WHEN 'premium' THEN 1
WHEN 'basic' THEN 2
ELSE 999
END,
customer_id ASC
我想在混音中添加另一栏....所以这就是我最终想做的事。
ORDER BY:
column2 = premium
THEN
column2 = basic
THEN
column3 = specialcustomer
THEN
display remaining results according to customer_id ASC
所以输出,按照我希望它出现的顺序。
John Doe - 溢价, 莎莉·琼斯 - 溢价, 吉姆史密斯 - 基本 - 特别客户, 唐约翰逊 - 基本 - 非特定客户, Mary Lee - basic - notspecialcustomer
答案 0 :(得分:1)
SELECT * FROM tablename
WHERE column1 = 'yes'
ORDER BY
CASE column2 WHEN 'premium' THEN 1
WHEN 'basic' THEN 2
ELSE 999
END,
IF(column3 = 'specialcustomer', 1, 2),
customer_id ASC
column3 = 'specialcustomer'
是特殊客户应该返回true
的支票。
order by
部分的内容是:
你可以想象这3个额外的虚拟列,从这些表达式中获取它们各自的值:
1)case ...
2)if ...
3)customer_id
然后按行顺序对这些列的值进行排序。