【问题标题】:MySQL - SELECT ... WHERE id IN (..) - correct orderMySQL - SELECT ... WHERE id IN (..) - 正确的顺序
【发布时间】:2011-02-23 11:59:40
【问题描述】:

我有以下查询

SELECT * FROM table WHERE id IN (5,4,3,1,6)

我想按照“id in..”中指定的顺序检索元素,这意味着它应该返回:

5 ....
4 ....
3 ....
1 ....
6 ....

有什么想法吗?

【问题讨论】:

  • 您必须指定带有嵌套IF 语句的ORDER BY,或设置5 = 1、4 = 2、3 = 3 的计算字段......并按此排序
  • 谢谢.. 我想我会那样做的 :)
  • FIELD() 更容易使用。不知道为什么有人想通过使用IF's 或CASE来伤害自己

标签: mysql where-in


【解决方案1】:

使用FIELD():

SELECT * FROM table WHERE id IN (5,4,3,1,6) ORDER BY FIELD(id, 5,4,3,1,6);

【讨论】:

  • 清洁解决方案。
【解决方案2】:
SELECT * FROM table WHERE id IN (5,4,3,1,6) ORDER BY FIELD (id, 5,4,3,1,6)

【讨论】:

    【解决方案3】:

    如果有人还在搜索,我刚刚找到它..

    SELECT * FROM `table` WHERE `id` IN (4, 3, 1) ORDER BY FIELD(`id`, 4, 3, 1)
    

    你可以找到函数的参考HERE

    【讨论】:

      【解决方案4】:

      那么您将不得不为每个 ID 创建一个 ID,因此:

      标识 |其他的

      1 = 5 2 = 4 3 = 3 4 = 1 6 = 6

      使用 IN STATEMENT 仅查看这些值是否在列表中,不按任何特定顺序对它们进行排序

      【讨论】:

        猜你喜欢
        • 2011-02-26
        • 1970-01-01
        • 1970-01-01
        • 2017-09-27
        • 1970-01-01
        • 2013-05-27
        • 2011-04-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多