【问题标题】:SQLite order by field [duplicate]SQLite按字段排序[重复]
【发布时间】:2018-01-14 02:30:50
【问题描述】:

我想在 SQLite 中使用联系人 ID 列表进行查询,并根据这些 ID 在列表中的顺序位置进行排序。

例如:

select * from Contact where Contact.ID in (1,3,2,4) 
// then order by (1,3,2,4)

SQLite 中是否有任何等效结构,例如 mysql 中的“ORDER BY FIELD”? 例如

select * from Contact where Contact.ID in (1,3,2,4) 
order by field (Contact.ID,1,3,2,4)

如果给出一长串 ID,也将支持,而不是像上面的示例那么短。

谢谢!

【问题讨论】:

    标签: sqlite


    【解决方案1】:
    SELECT *
    FROM CONTACT
    WHERE CONTACT.ID IN (1,2,3,4)
    ORDER BY 
       CASE ID
          WHEN 4 THEN 1
          WHEN 3 THEN 0
          WHEN 2 THEN 2
          WHEN 1 THEN 3
       END
    

    按顺序返回 (3,4,2,1)

    这是你想要的吗?

    【讨论】:

    • 否,结果应根据给定列表中 ID 的顺序进行排序。所以如果列表是(3,4,2,1),就不应该按照(1,2,3,4)排序,而是按照(3,4,2,1)排序。
    • @M.Ridha 我现在编辑了查询是你想要的吗?
    • 是的,它适用于一个简短的列表,但对于一个大列表(例如数百个 ID),编写其长长的排序代码列表会很麻烦。
    • 您希望如何生成任意列表?有优先级吗?如果是这样,只需添加优先级列和顺序...
    • 该列表基本上是基于处理几个复杂的查询和函数生成的摘要。我想知道为什么 SQLite 没有提供类似于 mysql 中的“按字段排序”之类的功能来简化排序过程。
    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 2013-06-24
    • 2011-06-02
    相关资源
    最近更新 更多