我有一个SQL查询,我在IN中使用了一个id列表,我希望我的结果按照我的列表排序

时间:2013-06-06 12:56:20

标签: php mysql

我的查询是

SELECT *
FROM `wp_patient_bill`
WHERE `bill_code` !=''
AND `is_billed` = 'Y'
AND `charged` = 'N'
AND `id` IN (97,419,631,632,633,422,635,421,35,799,60,423)

我希望记录数组按照我的列表排序,即ID

  

'97,419,631,632,633,422,635,421,35,799,60,423'

。我正在使用PHP。请建议我优化的方法。

3 个答案:

答案 0 :(得分:5)

这是另一种解决方案:

SELECT *
FROM `wp_patient_bill`
WHERE `bill_code` !=''
AND `is_billed` = 'Y'
AND `charged` = 'N'
AND `id` IN (97,419,631,632,633,422,635,421,35,799,60,423)
ORDER BY FIELD(`id`,97,419,631,632,633,422,635,421,35,799,60,423)

参考:SQL order by sequence of IN values in query

答案 1 :(得分:1)

假设您的ID列表在数组中

  1. 运行查询
  2. 循环显示结果,将每行结果存储在ID $data["{$row['id']}"] = $row;
  3. 上的关联数组中
  4. 遍历您的ID列表,并使用ID键入关联数组以获取数据。这将按照您想要的ID顺序排列。

答案 2 :(得分:0)

在查询末尾添加“ORDER BY ID”语句。