按另一列与id匹配的子查询排序


Sort by subquery where another column matches the id

我有以下表格

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
--- ----- ------- -----------

reply指向ID列,因此ID和reply有连接。ID是reply的父节点。当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的想法,如何做到这一点?

非常感谢

我的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发布的内容更近期