sql - MySQL ORDER问题

标签 sql mysql

我有一个非常简单的 SQL 查询,但缺少一些东西,我还没有找到这个问题的答案。 问题是我选择了一些具有多个 ID 的字段,我希望结果按此特定顺序排序。

查询如下

SELECT `content`.* 
FROM   `content` 
WHERE  (user_id = "1" AND ( id = "4" OR id = "7" OR id = "5" OR id = "8" )) 

默认顺序是“id ASC”(id 是我的主键),但在这种特殊情况下我希望顺序为 4,7,5,8。

有什么想法吗?

最佳答案

ORDER BY CASE user_id  
    WHEN "4" THEN 1  
    WHEN "7" THEN 2  
    WHEN "5" THEN 3  
    WHEN "8" THEN 4  
    ELSE 5  
END

如果你想概括它,你可以创建一个包含两列的新表 - “user_id”和“order_by_val”,加入它,以及“ORDER BY order_by_val”。


编辑:根据@Tim,MySQL 有一个专有函数 - FIELD() - 如他的帖子所述,如果您不关心可移植性,或者函数返回值不可优化的问题。

关于sql - MySQL ORDER问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/678196/

相关文章:

javascript - Sequelize ORM 中联接表的条件

php - MySQL 不尊重 UNIQUE 和 PRIMARY-keys

php - 如何更新字段以将值添加到现有值?

php - 在 PDO 中动态 WHERE 子句查询后计算特定行

mysql - 使用自定义用户名和密码在 Redhat 上安装 mysql-server 5.7

mysql - 在 MYSQL 中使用连接

sql - Azure SQL Server : Execute SQL command only after the previous one has been executed

sql - 如何将逗号分隔的 NVARCHAR 转换为 SQL Server 2005 中的表记录?

mysql - 计算开始时间和结束时间内某个时刻的记录

mysql - 如何在mysql中通过经纬度和半径获取最近的地方