gpt4 book ai didi

mysql - sql - 在自引用表中获取有或没有 child 的父 ID

转载 作者:行者123 更新时间:2023-11-29 01:53:07 25 4
gpt4 key购买 nike

这是我的表的(事件)内容。 eventID 是“主键”,parentID 是引用事件的“外键”(eventsID)

自引用表:

    eventID eventName parentID appFK    1       evt1      null     2    2       evt2      1        1    3       evt3      1        1    4       evt4      null     3    5       evt5      8        3    6       evt6      null     4    7       evt7      null     1    8       evt8      null     1

和另一个像这样的表格内容(应用程序):

        appID appName     1     app1          2     app2          3     app3          4     app4

我想获取所有具有给定 appID 的父事件 ID 或非父事件 ID。如果一个 child 有给定的 appID,我想得到他的 parentID 而不是他自己。所以 appID = 1 的结果将是这样的:

    eventID eventName ParentID appFK    1       evt1      null     2     // parent event who has children with appID = 1    7       evt7      null     1     // event with no child and appID = 1    8       evt8      null     1     // parent event with appID = 1 and has a child

我在这里尝试了很多示例并阅读了很多解决方案,但我没有发现这样的问题。你能帮我写出正确的 SQL 吗?

谢谢。

最佳答案

试试这个:

SELECT DISTINCT COALESCE(e2.eventID, e1.eventID), 
COALESCE(e2.eventName, e1.eventName),
COALESCE(e2.appFK, e1.appFK)
FROM events AS e1
LEFT JOIN events AS e2 ON e1.parentID = e2.eventID AND e1.appFK = 1
WHERE (e1.appFK = 1 AND e1.parentID IS NULL) OR (e2.eventID IS NOT NULL)

LEFT JOIN 获取 appID = 1 ( e1.appFK = 1).

WHERE 子句选择具有appID = 1 的根记录 与具有appID = 1 的子项相关的根记录(e2.eventID 不为空)。

Demo here

关于mysql - sql - 在自引用表中获取有或没有 child 的父 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36088749/

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