我有一个带有ID编号的PHP数组。这些号码已经订购。
现在,我想通过IN()方法获取我的结果,以获取所有ID。
但是,这些ID的排序应类似于IN方法。
例如:
IN(4,7,3,8,9)
应该给出如下结果:
4 - Article 4
7 - Article 7
3 - Article 3
8 - Article 8
9 - Article 9
有什么建议?也许有一个功能可以做到这一点?
谢谢!
Answers:
我认为您可能正在寻找函数FIELD-虽然通常认为它是字符串函数,但它也适用于数字!
ORDER BY FIELD(field_name, 3,2,5,7,8,1)
标准SQL没有提供执行此操作的方法(MySQL可以,但我更喜欢与供应商无关的解决方案,因此我可以随时切换DBMS)。
返回结果集后,这是您应该在后处理中执行的操作。SQL只能按“ order by”子句中指定的顺序返回它们(如果没有这样的子句,则可以按任何顺序返回)。
另一种可能性(尽管我不喜欢,但我很荣幸为您提供选择)是多次访问数据库,每个ID一次,并在它们进入时对其进行处理:
select * from tbl where article_id = 4;
// Process those.
select * from tbl where article_id = 7;
// Process those.
: : : : :
select * from tbl where article_id = 9;
// Process those.
CASE col WHEN *1st-val* THEN 1 WHEN *2nd-val* THEN 2 ... END
您只需要按语句给出正确的顺序即可。
SELECT ID FROM myTable WHERE ID IN(1,2,3,4) ORDER BY ID
您为什么要像示例中那样使数据无序排序?
如果您不介意连接长查询,请尝试以下方式:
SELECT ID FROM myTable WHERE ID=1
UNION
SELECT ID FROM myTable WHERE ID=3
UNION
SELECT ID FROM myTable WHERE ID=2