gpt4 book ai didi

Mysql - 检查是否有任何 child 指向 parent

转载 作者:行者123 更新时间:2023-11-29 01:34:49 26 4
gpt4 key购买 nike

我有下表:

Table_A:
id
parent_id

其中parent_id指的是同一张表的id。

从这个表中选择时,我想知道该记录是否有任何其他记录指向它的 id 作为 parent_id。例如

Record A
id: 1
parent_id: NULL

Record B
id: 2
parent_id: 1

Record C
id: 3
parent_id: 1

选择记录A时,我想知道它有 child ,我不在乎此时有多少,只是有它们。查询已经相当优化,所以我最好避免事后进一步查询。

到目前为止,我已经尝试将记录加入到它的子记录中,但是如果它有多个子记录,那么它会取回多个相同的记录。我还尝试计算它加入的子项,但这意味着我在获取记录集合时只能得到 1 条记录。

最佳答案

您可以通过 LEFT JOIN 使用以下解决方案:

SELECT t1.id, COUNT(t2.id) > 0 AS has_childs
FROM table_name t1 LEFT JOIN table_name t2 ON t1.id = t2.parent_id
GROUP BY t1.id
HAVING t1.id = 1

要获取所有记录(不带过滤器),可以使用以下解决方案:

SELECT t1.id, COUNT(t2.id) > 0 AS has_childs
FROM table_name t1 LEFT JOIN table_name t2 ON t1.id = t2.parent_id
GROUP BY t1.id

如果您的应用程序中也需要 child 的数量,您可以使用以下解决方案:

-- using a filter
SELECT t1.id, COUNT(DISTINCT t2.id) AS has_childs
FROM table_name t1 LEFT JOIN table_name t2 ON t1.id = t2.parent_id
GROUP BY t1.id
HAVING t1.id = 1

-- without a filter
SELECT t1.id, COUNT(DISTINCT t2.id) AS has_childs
FROM table_name t1 LEFT JOIN table_name t2 ON t1.id = t2.parent_id
GROUP BY t1.id

demo on dbfiddle.uk

关于Mysql - 检查是否有任何 child 指向 parent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56234745/

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