0

现在我正在尝试从我的数据库中获取主题。

topics (
  `replied_at` int(11) unsigned DEFAULT NULL,
  `created_at` int(11) unsigned DEFAULT NULL,
)

我想按较大的resolved_at 或created_at 对主题进行排序。因为我想获得最新创建或回复的主题。

例如:

topic1:
replied_at: NULL
created_at: 1111

topic2:
replied_at: 2222
created_at: 0001

topic3:
replied_at: 3333
created_at: 1111

结果是:

主题 3 主题 2 主题 1

mysql order by 支持这个查询吗?

谢谢 :)

编辑:

我使用了这个查询,但我得到了错误的顺序):

SELECT * FROM topic ORDER BY GREATEST(replied_at, created_at) desc limit 3\G;

4

2 回答 2

2
select * from `topics`
         order by greatest(coalesce(`replied_at`,0),coalesce(`created_at`,0)) desc;

或者,假设它replied_at总是大于created_at

select * from `topics`
         order by coalesce(`replied_at`,`created_at`,0) desc;
于 2013-09-24T11:10:16.490 回答
1

使用GREATEST()

order by greatest(ifnull(replied_at,0), ifnull(created_at,0)) desc
于 2013-09-24T11:08:39.437 回答