>我目前构造了一个 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,顺序
然后加入,然后使用"按顺序排序"进行查询