我使用了一个mysql查询,其中有“where id in(”22,20,21“)” 但是当我得到结果时,它的数组按照升序排序,即20,21, 20“where in”mysql clause
,但我需要它以相同的顺序,因为我给了该条款,除非给出明确排序
我使用了一个mysql查询,其中有“where id in(”22,20,21“)” 但是当我得到结果时,它的数组按照升序排序,即20,21, 20“where in”mysql clause
,但我需要它以相同的顺序,因为我给了该条款,除非给出明确排序
我认为你应该能够使用该字段关键字,像这样:
SELECT * FROM table
WHERE id in (22,20,21)
ORDER BY FIELD(id,22,20,21);
这是MySQL的具体,似乎不可思议,但它的作品。
SQL结果是无序的;该订单不会从in
条款中获取。
既然ID既不是ASC也不是DESC,你必须ORDER BY
别的东西;你如何确定22,20,21的订单呢?
您无法指定订单结果将返回到WHERE
子句中。如果您要指定订单,则需要为查询添加ORDER BY
子句。对于使用FIND_IN_SET
的解决方案,请参阅this answer。
如前所述...... WHERE
子句对结果集的排序没有任何作用。使用MySQL built-in FIELD
function在ORDER BY
子句指定结果集应如何下令:
... WHERE id IN (22, 20, 21) ORDER BY FIELD(id, 22, 20, 21) ...
一般来说,数据库系统返回任何顺序感觉的结果。如果你想要订购它,你必须告诉它。 This blog post提供了这样做的一种方法;您可以在网上找到其他解决方案。
什么是完整查询? – cambraca 2010-11-30 06:11:58
可能重复[如何命令查询结果与在WHERE条件中指定的id相同?](http://stackoverflow.com/questions/3984531/how-can-i-order-a-query-result-相同的ID在指定的在哪里条件) – deceze 2010-11-30 06:14:52
我同意@deceze它是重复的。没有看到你的答案,或者可能会指出他在那个方向。 – 2010-11-30 06:20:09