gpt4 book ai didi

mysql - 如何在一个 SQL 查询中选择同一个表中的相关项

转载 作者:行者123 更新时间:2023-12-01 00:34:56 28 4
gpt4 key购买 nike

我有一张看起来像这样的表:

id | date       | related_id
1 2018-01-01
2 2018-01-01
3 2018-01-02
4 2018-01-05 2
5 2018-01-06

查询 SELECT * FROM table WHERE date='2018-01-01' 应该产生以下结果:

id | date       | related_id
1 2018-01-01
2 2018-01-01
4 2018-01-05 2

如何在一个 MySql 查询中实现这一点?

最佳答案

如果你只有一个“层”,你可以这样做:

SELECT t.*
FROM theTable AS t
LEFT JOIN theTable AS rt ON t.related_id = rt.id
WHERE t.`date` = searchValue OR rt.`date` = searchValue
;

如果层数不确定,并且你有 MySQL 8.0,你可以使用 CTE:

WITH RECURSIVE myCte AS (
SELECT * FROM theTable WHERE `date` = searchValue
UNION
SELECT t.*
FROM theTable AS t
INNER JOIN myCTE ON t.related_id = myCTE.id
)
SELECT * FROM myCTE;

免责声明:我更熟悉 MS-SQL CTE,因此后一种选择可能存在一些问题。

关于mysql - 如何在一个 SQL 查询中选择同一个表中的相关项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55657257/

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