排序查询结果的问题


issue with ORDERING query results

>我目前构造了一个 id 数组并使用内爆查询此数组,如下所示:

$sql = "SELECT * FROM item_bank_tb WHERE item_id IN(" . implode(',', $ids) . ")";

数组$ids的构造方式使 ID 按特定顺序排列。但是,此查询的结果不按该顺序排列。我猜因为它们都在一个查询中,结果按它们所在的顺序(升序)显示。

有没有办法解决这个问题?(除了包括我可以订购的字段)

非常感谢。

看看这个例子。你必须使用 field() 函数。

SELECT * FROM item_bank_tb WHERE item_id IN(1,3,2)
order by field(item_id,1,3,2)

通过这种方式,您可以按所需的顺序获得物品。

说真的,添加ORDER BY item_id有什么问题

如果希望按特定顺序返回 SQL 查询的行,则必须在查询中包含ORDER BY

使用ORDER BY对结果进行排序。您可以有ORDER BY DESC(从高到低的降序值)或ORDER BY ASC(从低到高的升序)。

例如:

SELECT colName,colEmail FROM tblUsers ORDER BY id ASC

在这里阅读更多内容:

http://www.w3schools.com/sql/sql_orderby.asp

您可以构造一个"排序器"temporay表(如果它没有太多数据),而不是id数组,您可以在临时表中插入两个值:ID,顺序
然后加入,然后使用"按顺序排序"进行查询