我正在努力解决在 order by 子句中获取 if 语句或 case 语句的语法。
这是我当前的代码:
order by
case WHEN (col.line_item_no != 0) THEN Parent_Catalog_Desc,
col.line_no, spc.attr_value, col.line_item_no ELSE
Parent_Catalog_Desc, col.line_no END
说我缺少关键字。如果您需要更多背景信息,请告诉我。
基本上,如果 line_item_no 字段不为 0,则它遵循第一个排序顺序,如果它为 0,我将使用不同的排序顺序。
最佳答案
您可以分解出前两列。然后对剩余的列使用 CASE
:
order by Parent_Catalog_Desc, col.line_no,
(CASE WHEN col.line_item_no <> 0 THEN spc.attr_value END),
(CASE WHEN col.line_item_no <> 0 THEN col.line_item_no END)
CASE
是 SQL 语句中返回单个值的表达式。因此它不能用于返回多个值。
关于mysql - ORDER BY 子句中的 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34725226/