【发布时间】:2015-11-23 02:37:52
【问题描述】:
我有一张表(“cmets”),里面有 cmets,它们的创建日期,如果通过 PHP 按钮将它们推到前面,那么日期也是(否则日期将是 '0000- 00-00')。我想要的是正常显示的表格,但是将被“拒绝”的 cmets 推送到表格中的某个位置,该位置的创建日期为 ORDER BY(“已创建”)。
这是我想要实现的示例,它涉及将旧评论 (ID: 4) 推到顶部(注意:表中没有重复的 ID,只有查询结果会将重新推送的记录复制为此处显示):
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 将所有 cmets 与重新推送的 cmets 组合(因此所有重新推送的 cmets 将出现在查询后重复),但是我想将重复的重新推送 cmets 视为如果它们是在它们被重新推送时创建的,那么我需要交换重复项的“created”和“repushed”列值以获得这种效果,然后按“created”排序。
SELECT *
FROM comments
WHERE repushed != '0000-00-00 00:00:00'
UNION ALL
SELECT *
FROM comments
ORDER BY created DESC
当然这不会按预期工作,因为我不知道如何交换两列值。
【问题讨论】:
-
您能添加您的预期结果吗?
-
嗨。我在这里显示的表格是我的预期/预期结果