【问题标题】:Return results in MySQL LIKE Operators order [duplicate]以 MySQL LIKE 运算符顺序返回结果 [重复]
【发布时间】:2014-02-14 00:32:42
【问题描述】:

我想按照我设置 LIKE 运算符的顺序获取结果。首先是包含标题 raspberry 的行,然后是 apple 和 last pear。至于现在,它只是按照我将它们插入表中的顺序返回行。

例子:

SELECT id FROM table WHERE 
title LIKE 'raspberry' OR 
title LIKE 'apple' OR 
title LIKE 'pear'

【问题讨论】:

  • 如果和常量比较,title in ('raspberry', 'apple', 'pear') 更简单。

标签: php mysql


【解决方案1】:

使用FIELD()

SELECT id 
FROM table 
WHERE title in ('raspberry','apple','pear')
ORDER BY field(title, 'raspberry','apple','pear')

【讨论】:

    【解决方案2】:

    你也可以使用CASE

    SELECT 
      id 
    FROM
      TABLE 
    WHERE title LIKE 'raspberry' 
      OR title LIKE 'apple' 
      OR title LIKE 'pear' 
    ORDER BY 
      CASE
        WHEN title LIKE 'raspberry' 
        THEN 1 
        WHEN title LIKE 'apple' 
        THEN 2 
        WHEN title LIKE 'pear' 
        THEN 3 
        ELSE 4 
      END 
    

    CASE Syntax

    【讨论】:

    • @downvoters 愿意解释答案中的问题
    猜你喜欢
    • 2020-08-31
    • 1970-01-01
    • 2021-11-27
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2020-05-28
    • 1970-01-01
    相关资源
    最近更新 更多