SQL排序疑问:自定义类别排序后如何按标题升序排列
实现自定义类别排序后按标题字母升序排序
当然可以实现这个需求,你只需要把title ASC作为第二个排序条件,放在CASE语句的END之后,用逗号分隔即可。正确的SQL语句如下:
SELECT * FROM menu ORDER BY CASE WHEN category = 'Appetizers' THEN 1 WHEN category = 'Entrees' THEN 2 WHEN category = 'Desserts' THEN 3 WHEN category = 'Beverages' THEN 4 END, title ASC;
说明
- CASE语句会为每个类别生成对应的排序优先级数字(1到4),SQL会先按这个数字升序排列,确保类别按你定义的顺序展示。
- 逗号后的
title ASC是第二个排序条件,当类别相同时,会自动按标题的字母顺序升序排列。
你之前尝试把title ASC加在CASE的每一行或者错误的位置,导致语法不符合SQL规范,现在这种写法完全符合排序逻辑和语法要求。
内容的提问来源于stack exchange,提问作者Bill Teale
相关产品推荐
相关产品推荐

