首页 > 解决方案 > 为什么这个 MYSQL CASE 不起作用?

问题描述

SELECT * FROM sample WHERE keywords LIKE '%face food%'
ORDER BY
  CASE
    WHEN keywords LIKE '%,face food,%' THEN 1
    WHEN keywords LIKE '%face food%' THEN 2
    WHEN soundex(`keywords`) LIKE CONCAT('%',soundex('face food'), '%') THEN 3
    WHEN keywords LIKE '%,facefood,%' THEN 4
    WHEN keywords LIKE '%facefood%' THEN 5
    WHEN soundex(`keywords`) LIKE CONCAT('%',soundex('facefood'), '%') THEN 6
  END

标签: mysqlcase

解决方案


您错过了最后一个else子句,您的查询将是

SELECT * FROM sample WHERE keywords LIKE '%face food%'
ORDER BY
  CASE
    WHEN keywords LIKE '%,face food,%' THEN 1
    WHEN keywords LIKE '%face food%' THEN 2
    WHEN soundex(`keywords`) LIKE CONCAT('%',soundex('face food'), '%') THEN 3
    WHEN keywords LIKE '%,facefood,%' THEN 4
    WHEN keywords LIKE '%facefood%' THEN 5
    WHEN soundex(`keywords`) LIKE CONCAT('%',soundex('facefood'), '%') THEN 6
   Else 7
  END

推荐阅读