gpt4 book ai didi

php - 找到没有 child 的行,如果有 child 最新的 child

转载 作者:行者123 更新时间:2023-11-28 23:16:07 30 4
gpt4 key购买 nike

我有这样的简单表格:

  • 编号
  • parent_id
  • 创建于

具有父/子关系...如果一行是子行,则它有一个 parent_id,否则它的 parent_id 为 0。

现在我想选择所有没有子项(因此本身)或有子项的行,因此通过 created_at 获取最新的子项(并且不将其自身包含在最终结果中)。

作为一个视觉示例,您可以看一下这张小图片:
http://s9.picofile.com/file/8294092118/qqq.jpg

我只想选择第 24 和 27 行:

24 因为它没有 child
不是 25 因为它有 child
27 因为它是 25 岁的最新 child
而不是 26,因为它的 child 也是 25,但不是最新的

最佳答案

  • 使用left join 获取所有父子对。
  • 按 child 的 created_at 排序,按 parent_id 分组,将为每个 parent_id 生成最新的 child_id。
  • 当child_id不存在时,使用coalesce默认为parent_id:

查询:

select coalesce(child_id, parent_id)
from (
select a.id parent_id, b.id child_id, b.created_at
from mytable a
left join mytable b on a.id = b.parent_id
where a.parent_id = 0
order by b.created_at desc) a
group by parent_id

关于php - 找到没有 child 的行,如果有 child 最新的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43812984/

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