gpt4 book ai didi

mysql - 当 WHERE 子句中的 id 来自上一行时选择数据

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

我有 2 个表。第一个保存最后一个操作的 id,第二个保存操作的 id 和一些数据

mysql> select * from t1;
+----+--------------+
| id | id_last_oper |
+----+--------------+
| 1 | 45 |
+----+--------------+

mysql> select * from t2;
+-------+------------+---------+
| fo_id | fo_prev_id | fo_name |
+-------+------------+---------+
| 1 | NULL | a |
| 5 | 1 | a |
| 22 | 5 | a |
| 45 | 22 | a |
+-------+------------+---------+

这是我的查询:

select fo_id from t2 
where fo_id=44 and @id:=fo_prev_id
union select fo_id from t2 where fo_id=@id
union ...;

我需要选择所有行,但行数不是永久性的,我无法使用简单的 UNION 选择所有行。我怎样才能实现我的目标?

最佳答案

几个月前我遇到了同样的问题。有两种解决方案。

解决方案 1(推荐) - 使用“左/右关系”
关系数据库不是为层次结构设计的。这个链接帮助我改变了表的结构以使用层次结构。它快速且易于使用: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
我推荐你使用这个解决方案,因为它独立于你使用的数据库,而且我的经验一直是积极的

解决方案 2 - 存储过程
在这种情况下,您可以递归调用存储过程本身。在这句话中很好地解释了。如果向下滚动更多,请参阅解决方案 1 中的相同链接。
mysql stored procedure that calls itself recursively

关于mysql - 当 WHERE 子句中的 id 来自上一行时选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41296890/

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