我有一个表(“comments”)中有很多注释,它们的创建日期,如果通过PHP按钮将它们推到前面,则日期也是(否则日期将是“0000-00-00”)。我想要的是将表显示为正常的,但是要将“repushed”的注释推送到表中创建日期为ORDER BY
的地方(“created”)。
下面是我想要实现的一个例子,它包括将一个旧的注释(I d:4)推到最上面(注意:表中没有重复的ID,只有查询结果会复制这里显示的重复的repused记录):
id | comment | created | repushed
---+---------+---------------------+-------------------
4 | hello | 2015-05-11 06:11:12 | 2015-11-22 11:17:01
23 | recent | 2015-05-22 12:18:23 | 0000-00-00 00:00:00
22 | recent | 2015-05-22 11:15:43 | 0000-00-00 00:00:00
21 | recent | 2015-05-22 10:23:10 | 0000-00-00 00:00:00
4 | hello | 2015-05-11 06:11:12 | 2015-11-22 11:17:01
因此,我试图使用
UNION
将所有评论与可否认的评论结合起来(因此,所有可否认的评论在被查询时都将显示为重复的),但是我想将重复的可否认的评论视为它们是在被否认时创建的,因此,我需要交换重复项的“created”和“repushed”列值以获得这种效果,然后按“created”排序。SELECT *
FROM comments
WHERE repushed != '0000-00-00 00:00:00'
UNION ALL
SELECT *
FROM comments
ORDER BY created DESC
当然,这并不能按预期工作,因为我不知道如何交换这两个列的值。
最佳答案
使用您已经拥有的资源,请尝试以下操作:
SELECT id,comment,repushed as created,repushed
FROM comments
WHERE repushed != '0000-00-00 00:00:00' group by id
UNION ALL
SELECT *
FROM comments group by id ORDER BY created DESC
这将把repushed列重命名为created
关于php - SQL-按创建日期对“重复推”排序时显示两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33862939/