【问题标题】:How to correct result with Union All如何使用 Union All 更正结果
【发布时间】:2020-09-20 23:49:24
【问题描述】:

我正在获取 Union All 的结果,但只有 1 个查询正在运行。

select user_leftside as SId  from tbl_user inner join (select @sid:=(select group_concat(user_leftside,',',user_rightside) from tbl_user where find_in_set(user_id, @nsid)) , @nsid:=@sid as fset from tbl_user, (select @nsid:='first_left_child',@sid='')v )gr on find_in_set(user_leftside,fset) where user_leftside <> ''
UNION ALL 
select user_rightside as SId  from tbl_user inner join (select @sid:=(select group_concat(user_leftside,',',user_rightside) from tbl_user where find_in_set(user_id, @nsid)) , @nsid:=@sid as fset from tbl_user, (select @nsid:='first_left_child',@sid='')v )gr on find_in_set(user_rightside,fset) where user_rightside <> ''

如何使用 Union All 获得结果。这是与树相关的查询

【问题讨论】:

  • 单个查询单独工作正常
  • 在这两个子查询中使用不同的变量名:在 MySql 查询中使用变量总是有风险的:无法保证评估的顺序。这些子查询甚至可能并行执行评估,因此您必须避免变量值从一个溢出到另一个。
  • @trincot,特别感谢您,查询运行起来就像一个魅力。我如何将您的评论标记为解决方案。 ?
  • 我将其发布为答案。现在你可以勾选它了 ;-)

标签: mysql tree binary-tree union-all


【解决方案1】:

在这两个子查询中使用不同的变量名。

在 MySQL 查询中使用变量总是有风险的:无法保证评估的顺序。这些子查询甚至可能并行执行评估,因此您必须避免变量值从一个溢出到另一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多