我有一个 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
有什么建议吗? 也许有这样做的功能?
谢谢!
你只需要按照语句给出正确的顺序。
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
标准 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.
我想您可能正在寻找函数 费尔德——虽然通常认为它是一个字符串函数,但它对于数字也很有用!
ORDER BY FIELD(field_name, 3,2,5,7,8,1)
你可以使用 FIELD():
FIELD()
ORDER BY FIELD(id, 3,2,5,7,8,1)
返回 str1,str2,str3,... list 中 str 的索引(位置)。如果没有找到 str,返回0。
这是一种丑陋的黑客虽然,所以真的只有使用它,如果你没有其他选择。对应用程序中的输出进行排序可能会更好。