无需订购即可在查询中获取数据表

时间:2012-01-12 09:11:11

标签: php

我以这种格式从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)格式显示。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

您应该在查询中添加order by clause。 因为您的订单有点奇怪,您必须编写case workflow代码:

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是因为您有另一个标记为这样的问题。然后,您可以使用field函数简化以前的查询:

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

请注意,该字段使用字符串,并且隐式类型转换是maded。

答案 1 :(得分:0)

在转储之前尝试实际操作数据?每行将DId作为行中的一个值。

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