【问题标题】:Order by same input where in sqlite在 sqlite 中按相同的输入排序
【发布时间】:2020-09-14 09:23:32
【问题描述】:

对于我的项目,我使用sqlite 通常我使用mysql。在mysql中我会做这个查询:

SELECT * FROM breeds where id in (2, 1, 4) ORDER BY FIELD(id, 2, 1, 4) ASC

我需要通过where in ids 订购。由于FIELD 在 sqlite 中不起作用,我如何在 sqlite 中获得相同的结果?

【问题讨论】:

  • 使用INSTR(),例如...列表中的占有和子串开始是相对相同的。

标签: sql sqlite sql-order-by case


【解决方案1】:

您可以使用 case 表达式 - 基本上这就是 MySQL 的 field() 函数所做的:

select *
from breeds
where id in (2, 1, 4)
order by case id
    when 2 then 1
    when 1 then 2
    when 4 then 3
end

【讨论】:

    【解决方案2】:

    如果您可以创建一个以逗号分隔的 id 列表的字符串,例如'2,1,4',那么您可以使用函数INSTR()

    SELECT * FROM breeds 
    WHERE id IN (2, 1, 4) 
    ORDER BY INSTR(',' || '2,1,4' || ',', ',' || id || ',')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      相关资源
      最近更新 更多