我是个新手,以前从未使用过案例,所以请不要笑。
为什么这个查询不起作用?
SELECT *
FROM `cronjob_reloaded`
WHERE `carid` LIKE '%bmw%'
OR `age` BETWEEN '10' AND '15'
ORDER BY
CASE WHEN `carid` LIKE '%bmw%' = 1
THEN 1
CASE WHEN `age` BETWEEN '10' AND '15' = 2
THEN 2
我收到此错误:
Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE WHEN
age
BETWEEN '10' AND '15' =2 THEN 2
最佳答案
你的语法有点奇怪。在 LIKE
情况下,您不需要 = 1
,第二个条件的 = 2
无效,并且由于这两个条件都是相同的语句,不要重复 CASE
- 而是以 WHEN
开始第二个条件。
还建议放入 ELSE
情况以确定性地匹配所有其他行。下面,我插入了 ELSE 3,它将所有其他不匹配的行排序在两个匹配条件之后。
最后,整个结构应以 END
关键字结束。
SELECT * FROM `cronjob_reloaded`
WHERE
`carid` LIKE '%bmw%'
OR
`age` BETWEEN '10' AND '15'
ORDER BY
CASE
WHEN `carid` LIKE '%bmw%' THEN 1
WHEN `age` BETWEEN '10' AND '15' THEN 2
/* Advisable to add an ELSE condition to catch all other rows */
ELSE 3
END
关于mysql - 为什么这个 MySQL CASE 查询不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12388575/