php - MySQL 在 IN() 中的参数后排序

标签 php mysql

我有一个字符串,其中包含很多与我的数据库相对应的 ID。 喜欢:

1,2,3,4,5

然后我执行 mySQL 查询以选择所有这些行:

SELECT * FROM `table` WHERE `id` IN (".$myIDs.")

我希望 mySQL 按照它们在我的 IN() 选择中的顺序返回行。

所以如果我有

2,1,3,4,5

在 PHP 中获取时,我会将 #2 作为第一行。 没有任何 ORDER BY 看起来它首先返回最小的 ID。

如果您需要进一步解释,请告诉我。

最佳答案

您应该能够通过 FIELD() 执行此操作像这样的功能:

SELECT * FROM `table` WHERE `id` IN (2,1,3,4,5) ORDER BY FIELD(`id`, 2,1,3,4,5) DESC

即:

SELECT
  *
FROM
  `table`
WHERE
  `id` IN (".$myIDs.")
ORDER BY
  FIELD(`id`, ".$myIDs.") DESC

此博文中的更多信息:Sorting MySQL rows using column values .

关于php - MySQL 在 IN() 中的参数后排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291959/

相关文章:

php - 将 PDO 数据库对象实例传递给其他类函数

php - 对 php.ini 的更改未反射(reflect)在 php 信息中

php - 如何插入限制帖子的分页?

php - 无法在 Ubuntu 18.10 LEMP 堆栈上安装 Laravel?

php - 制作 "hashtag"系统的最佳方法

php - php 中计划的待办事项列表循环计算的时间 - (7 分钟 = 13 :04 - 13:11 and so on)

mysql - 如何在 React 中渲染数组中的图像?

php - 数据库多表查询显示结果

mysql - MYSQL如何在表的子集内自增

php - 我需要更新连接两个不同表的表。此查询是否合适?