我有下表
ID | tbl | reply | time
--- ----- ------- -----------
1 | blue| 0 | 01:00
--- ----- ------- -----------
2 | red | 1 | 01:05
--- ----- ------- -----------
3 | pink| 1 | 11:11
--- ----- ------- -----------
4 | pink| 0 | 22:22
--- ----- ------- -----------
5 | pink| 4 | 00:03
--- ----- ------- -----------
回复引用ID列,因此ID和回复都有连接。 ID是回复的父级。当reply=0
表示我们选择了父行时,它就是回复。
目前我有这个简单的mysql查询,以便只选择父母
SELECT tbl, time FROM table WHERE reply=0 ORDER BY time ASC
首先会选择ID=1
,然后选择ID=4
我想要的是能够在孩子们的时候给父母订购,而不是向孩子们展示。因此,在上面的示例中,只是因为ID=5
的时间为0:03,所以ID=4
应首先显示,然后ID=1
除了创建另一个表外,有什么想法吗? 如果它是更好的可能任何PHP的想法如何做到这一点?
非常感谢
答案 0 :(得分:1)
我的SQL有点生疏,但是:
SELECT t.tbl, t.time
FROM table t
WHERE t.reply=0
ORDER BY
(SELECT MAX(time) FROM table WHERE reply = t.id) DESC,
t.time DESC
诀窍是给主查询表一个名称(在这个例子中为t
) - 然后你可以在子查询中引用它,而不会让服务器感到困惑。
我知道这可能只是你的例子,但你最好将你的时间列存储为DATETIME甚至是UNIX时间戳(在INT字段中)。你需要这个日期,所以昨天23:00发布的东西不会比今天15:00发布的东西更新近