“在哪里”mysql子句

时间:2010-11-30 06:10:11

标签: php mysql

我使用了一个mysql查询,其中有“where in in(”22,20,21“)” 但是当我得到结果时,它的数组按照先前的顺序排列,即20,21,20

但我需要的顺序与我给出的条款相同

5 个答案:

答案 0 :(得分:18)

认为你应该能够像这样使用FIELD关键字:

SELECT * FROM table
WHERE id in (22,20,21)
ORDER BY FIELD(id,22,20,21);

这是特定于mysql的,看起来很神奇,但它确实有效。

答案 1 :(得分:2)

除非给出明确的排序,否则SQL结果是无序的;订单不会从in条款中获取。

由于ID既不是ASC也不是DESC,你必须ORDER BY别的东西;你怎么首先确定22,20,21订单?

答案 2 :(得分:2)

如前所述...... WHERE子句对结果集的排序没有任何作用。在ORDER BY子句中使用MySQL built-in FIELD function指定应如何排序结果集:

... WHERE id IN (22, 20, 21) ORDER BY FIELD(id, 22, 20, 21) ...

答案 3 :(得分:0)

您无法指定将在WHERE子句中返回的订单结果。如果要指定顺序,则需要在查询中添加ORDER BY子句。对于使用FIND_IN_SET的解决方案,请参阅this answer

答案 4 :(得分:0)

通常,数据库系统会以任何顺序返回结果。如果您想订购它,您必须告诉它。 This blog post提供了一种方法;您可以在线找到其他解决方案。