无需排序即可从IN查询中获取数据


Get data form IN query without ordering

我以这种格式从IN查询中获取数据

SELECT * FROM wp_devices WHERE QID=’1′ and DId IN(36,71,37,39,38)

但是它们以这种格式DId IN(36,37,38,39,71)而不是DId IN(36,71,37,39,38)显示。

我该怎么办?

您应该在查询中添加order by子句。因为您的订单有点奇怪,您必须编写案例工作流代码:

SELECT * 
FROM wp_devices 
WHERE 
   QID='1' and 
   DId IN (36,71,37,39,38) 
ORDER BY
   case DId
     when 36 then 1
     when 71 then 2
     when 37 then 3
     when 39 then 4
     when 38 then 5
   end

我想您使用mysql是因为您有另一个问题被标记为这样。然后您可以使用字段函数简化以前的查询:

SELECT * 
FROM wp_devices 
WHERE 
   QID='1' and 
   DId IN (36,71,37,39,38) 
ORDER BY
   field( DId, 36,71,37,39,38 )

请注意,字段在进行隐式类型转换时可用于字符串。

在转储数据之前,是否尝试实际操作数据?每一行都将其DId作为该行中的值之一。

如果需要特定的排序,请在选择行并检索结果后,按该顺序输出行