mysql - SQL - 按 2 列排序 - 排序主题(先固定,然后按创建的时间戳)

标签 mysql forum

我有 1 个表主题。

table

我想以这种方式对行进行排序。

首先获取 pinned = 1id ASC 排序的行

第二行是 pinned = 0created_ts DESC 排序的行

代码:

SELECT topics 
WHERE category_id = :i AND deleted = :d 
ORDER BY pinned ASC, created_ts DESC

注意:我错误地切换了表格中的列(edited_by <=> edited_ts)

最佳答案

您应该能够使用 CASE如果另一列满足特定条件,则仅按列排序:

SELECT id, title, ...
FROM topics 
WHERE category_id = :i AND deleted = :d 
ORDER BY pinned DESC,   -- first 1 then 0
         CASE WHEN pinned = 1 THEN id ELSE 0 END, -- ignore for pinned=0
         created_ts DESC

参见 example on SQL Fiddle .

关于mysql - SQL - 按 2 列排序 - 排序主题(先固定,然后按创建的时间戳),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28051845/

相关文章:

php - 如何保护我的论坛免受垃圾邮件的侵害?

java - 无法为论坛创建答案表?

python - 在 500k 条记录中查找相似对象

MySQL加载数据错误

java - 使用 JDBC 应用程序在 MySQL 中创建数据库和表

mysql - 使用 JOIN 和 GROUP BY 时出现重复条目

php - 确定论坛中的未读项目

django - Django 的现成论坛、聊天和 PM 解决方案

javascript - 如何查询数据库并动态绘制仪表板上的值?

javascript - 根据第一个下拉值填充第二个下拉列表