sql - 基于 WHERE IN 子句数据排序结果集

标签 sql mysql database sql-order-by

考虑这个 MySQL 查询:

SELECT
  someColumns
FROM
  someTable
WHERE
  someColumn IN ( value1, value2, value3 )

...我如何保证行集按照 IN () 子句的值的准确顺序排列出来?我认为如果不给它一个 ORDER BY 子句就不能保证这一点,是吗?

附言:
IN () 子句的值将是由 PHP(利用 Zend Framework 的 select 语句)按以下方式传递给查询的任意数据数组:

->where( 'someColumn in (?)', $theArrayWithValues );

最佳答案

在 ORDER BY 中使用 CASE 语句:

ORDER BY CASE someColumn
           WHEN value1 THEN 1
           WHEN value2 THEN 2
           WHEN value3 THEN 3
         END ASC

根据需要分配任意值。我通常不在 ORDER BY 中包含 ASC 因为如果没有定义它是隐含的,但我想在你想要在 DESC 订单。

关于sql - 基于 WHERE IN 子句数据排序结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2245936/

相关文章:

mysql - 如何搜索JSON数据关联数组mysql 5.5

javascript - 像 web-app 这样的 twitter 中的 Sequelize 中的多对多 self 引用

sql - 超过 4000 个字符在 Oracle 上给出字符串文字太长错误

sql - 架构中不存在类型 "geometry",但扩展名存在

mysql - 更新具有 IN 和 NOT IN 的查询的替代方法

php - 查找用户小部件

php - 使用PHP数组将数据插入MYSQL

database - “电子商务”可扩展数据库模型

Javascript,关于数组中的node.js : How can I make the code store,,SQL值

c# - 管理员和用户检查不起作用