gpt4 book ai didi

mysql - 按日期排序并将父/子文档分组

转载 作者:行者123 更新时间:2023-11-29 02:54:23 25 4
gpt4 key购买 nike

我有一个数据库,里面有一些文件。某些文档具有与其关联的子文档。每个文档都有一个“createdat”列。如果文档没有子项,则“iParentDoc”列为 0。否则,Number 等于父项的列 docID。

基本上我想主要按 Parentdoc 的日期排序, child 应该按他们的日期排序并直接显示在 parent 之后,例如

Parent Doc0 (id: 1, iParentDoc: 0, createdat: 01-01-2015)
Parent Doc1 (id: 2, iParentDoc: 0, createdat: 01-01-2014)
- Child doc1 (id: 3, iParentDoc: 2, createdat: 01-02-2014)
- Child doc2 (id: 4, iParentDoc: 2, createdat: 01-03-2014)

当我根据“createdat”列更改 DESC/ASC 排序时,排序尤其会出现问题,因为我得到了结果:

- Child doc2 (id: 4, iParentDoc: 2, createdat: 01-03-2014)
- Child doc1 (id: 3, iParentDoc: 2, createdat: 01-02-2014)
Parent Doc1 (id: 2, iParentDoc: 0, createdat: 01-01-2014)
Parent Doc0 (id: 1, iParentDoc: 0, createdat: 01-01-2015)

因此排序(根据 createdat DESC/ASC)应始终由父列和随后出现的子列进行。所以应该是:

Parent Doc1 (id: 2, iParentDoc: 0, createdat: 01-01-2014)
- Child doc1 (id: 3, iParentDoc: 2, createdat: 01-02-2014)
- Child doc2 (id: 4, iParentDoc: 2, createdat: 01-03-2014)
Parent Doc0 (id: 1, iParentDoc: 0, createdat: 01-01-2015)

我试过这个查询,但它给了我赔率,尤其是当排序相反时。

ORDER BY COALESCE( NULLIF(iParentDoc,0), id) DESC, NULLIF(iParentDoc,0) IS NOT NULL , createdat desc LIMIT 20

有人可以帮忙吗?

最佳答案

我遇到了类似的问题。可以再增加一列parent_createdat,在iParentDoc中设置parent id的时候插入parent的document datetime。

然后:

ORDER BY COALESCE(NULLIF(parent_createdat,0), NULLIF(createdat,0)) DESC, createdat ASC

关于mysql - 按日期排序并将父/子文档分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32316039/

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