gpt4 book ai didi

SQL:按(可选)关系对结果排序

转载 作者:行者123 更新时间:2023-12-01 16:22:49 24 4
gpt4 key购买 nike

我有两个表 Post (id, ..., creationdate)Post_Has_Post(parent_id, child_id)

一些帖子可以是父<->子关系的一部分,并在Post_Has_Post-表中有相应的条目。

我想做的是获取按创建日期排序的帖子列表。但是,其他帖子的任何子项都应插入结果中的父项之后。现在当然很容易按创建日期排序,但我对第二种排序条件没有想法。有没有办法做到这一点?

Post                              Post_Has_Post
+------+-------+--------------+ +-----------+----------+
| id | ... | creationdate | | parent_id | child_id |
+------+-------+--------------+ +-----------+----------+
| 1 | ... | 2010-11-01 | | 1 | 3 |
| 2 | ... | 2010-11-02 | +-----------+----------+
| 3 | ... | 2010-11-03 |
+------+-------+--------------+

我需要这样排序的结果:

Post
+------+-------+--------------+
| id | ... | creationdate |
+------+-------+--------------+
| 1 | ... | 2010-11-01 |
| 3 | ... | 2010-11-03 |
| 2 | ... | 2010-11-02 |
+------+-------+--------------+

有没有办法通过排序来解决这个问题?

最佳答案

假设 parent 总是在 child 之前,这应该可行。

SELECT p.id, ..., creationdate
FROM Post p
LEFT JOIN Post_Has_Post php
ON p.id = php.child_id
ORDER BY COALESCE(php.parent_id, p.id),
creationdate

关于SQL:按(可选)关系对结果排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6522944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com