【发布时间】:2021-12-06 14:49:03
【问题描述】:
如何创建自定义订单,按NAME 对行进行排序,其中第一行的名称包含 Bob,然后是名称为 Alex 的行?
为了解释我的意思:如果 NAME = 'Bob' 和 NAME = 'Alex',我已经进行了以下查询以对结果进行排序:
SELECT * FROM table
ORDER BY CASE `NAME`
WHEN 'Bob' THEN 1
WHEN 'Alex' THEN 2
ELSE 3
END
但这仅在 NAME 完全等于 Bob 或 Alex 时才有效。我想修改它以排序名称中是否包含 Bob 或 Alex,基本上是 NAME LIKE '%Bob%' 和 NAME LIKE '%Alex%'。我尝试了类似以下的方法,但它不起作用。
ORDER BY CASE `NAME`
WHEN LIKE '%Bob%' THEN 1
WHEN LIKE '%Alex%' THEN 2
ELSE 3
END
正确的语法是什么?
【问题讨论】:
-
你使用
case作为一个简单的表达式,使用searched case表达式。 -
有效 SQL,但 MySQL 不支持。
标签: mysql sql sql-order-by