SELECT c.id, (select @b:=c.id) as 'iid',
(select a._id from
(SELECT @c '_id',
(select @c:=parent_id from sys_menu where id = _id) 'parent'
from sys_menu sys,(select @c:=@b) r) a where _id is not null and parent is null) 'parent'
from (SELECT * from sys_menu s where id in(8,11)) c
请问这个sql语句错在哪里,id为8 的结果是对的,id为11的结果不对,变量传递的有问题吗
太多关联。看的好晕。这么多关联从最后开始看。结果一条一条对比
排查这个问题,把复杂的查询逻辑拆开,跟洋葱一样,从外往里剥,然后从最里面的一个sql先去执行,再把最里面的一个sql和下一个sql合并下再执行,以此类推,逐一核对8和11的数据是哪个sql导致的,一般就是那个sql对应的条件中8符合条件,而11不满足条件所以数据出现了差异。
是不是有null值 影响数据的查询
看你这个语句,你好像是想查询出ID为8和11的父ID吧,干嘛要这么写?不懂你要的是什么效果
一般就是那个sql对应的条件中8符合条件,而11不满足条件所以数据出现了差异。
递归查询结果一条一条对比
这个时角标还是区间,开闭区间不同吧
变量确实太多了,一般设置一个就够了