我有一个 PHP 数组,其中包含多个 ID。这些号码已经被订购。

现在我想通过 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

有什么建议么?也许有一个函数可以做到这一点?

谢谢!

有帮助吗?

解决方案

我想你可能会寻找功能领域! - 而通常被认为是一个字符串函数,它工作正常换号,太

ORDER BY FIELD(field_name, 3,2,5,7,8,1)

其他提示

您可以使用 FIELD()

ORDER BY FIELD(id, 3,2,5,7,8,1)
  

返回STR在STR1,STR2,STR3,...列表中的索引(位置)。如果未找到STR返回0。

这是一种丑陋的黑客攻击的,所以如果你没有别的选择,只有真正使用它。排序在你的应用程序的输出可以是更好的。

标准 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.

您只需要通过语句来给出正确的顺序。

SELECT ID FROM myTable WHERE ID IN(1,2,3,4) ORDER BY ID

为什么要得到你的数据有序无序就像你的榜样?

如果你不介意concatening长的查询,尝试这种方式:

SELECT ID FROM myTable WHERE ID=1
UNION
SELECT ID FROM myTable WHERE ID=3
UNION
SELECT ID FROM myTable WHERE ID=2
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top