У меня есть фрагмент кода, в котором я получаю данные из той же таблицы с помощью Union, но теперь я хочу обойтись без union
select leftn as SId , TId
from test_tree
inner join (select @sid:=(select group_concat(leftn,',',rightn)
from test_tree
where find_in_set(sid, @nsid))
, @nsid:=@sid as fset
from test_tree, (select @nsid:='AMSJUTATE',@sid='')v )gr
on find_in_set(leftn,fset) where leftn <> ''
union
(select rightn as SId , TId
from test_tree
inner join (select @sid:=(select group_concat(leftn,',',rightn)
from test_tree
where find_in_set(sid, @nsid))
, @nsid:=@sid as fset
from test_tree, (select @nsid:='AMSJUTATE',@sid='')v )gr
on find_in_set(rightn,fset) where rightn <> ''
Результат отображается как
SId TId
AMSNUDUCU 2
AMSGUWUDE 3
AMSXAWUXU 4
AMSZUCIVO 5
AMSFASOJA 6
AMSTEMUJI 7
AMSBIZEZO 8
AMSXUDINE 9
AMSZEVUTA 10
AMSREXEGI 11
AMSBIXIBO 12
AMSHEFOVI 13
и т. Д.
У меня есть такая таблица:
ВЫБРАТЬ * ИЗ test_tree
TId SId LeftN RightN LStatus RStatus
1 - AMSJUTATE 1
2 AMSJUTATE AMSNUDUCU AMSFEZAVU 1 1
3 AMSNUDUCU AMSGUWUDE AMSTUTUNE 1 1
4 AMSFEZAVU AMSXAWUXU AMSHALURA 1 1
5 AMSGUWUDE AMSZUCIVO AMSKEFOFA 1 1
6 AMSTUTUNE AMSFASOJA AMSZAPUPE 1 1
7 AMSXAWUXU AMSTEMUJI AMSPOROBE 1 1
8 AMSHALURA AMSBIZEZO AMSFOHOFI 1 1
9 AMSZUCIVO AMSXUDINE 1
10 AMSKEFOFA AMSZEVUTA 1
11 AMSFASOJA AMSREXEGI 1
12 AMSZAPUPE AMSBIXIBO 1
13 AMSTEMUJI AMSHEFOVI 1
14 AMSPOROBE AMSLUPAKE 1
15 AMSBIZEZO AMSCUSIPU 1
16 AMSFOHOFI AMSCEMUSU 1
17 AMSXUDINE AMSKATOTU 1
18 AMSZEVUTA AMSLECEVU 1
19 AMSREXEGI AMSKOVUSA 1
20 AMSBIXIBO AMSLIWULO 1
21 AMSHEFOVI AMSJOLOWE 1
22 AMSLUPAKE AMSREROXE 1
23 AMSCUSIPU AMSPOMUBE 1
24 AMSCEMUSU AMSPULINU 1
25 AMSPULINU AMSWOFIVO 1
и так далее.
Этот запрос означает, что родитель оставил дочерний и правый дочерний, и я нашел все дочерние узлы одного родителя через Union, но я хочу сделать это другим способом. Есть ли альтернатива моему запросу Union. Поэтому, пожалуйста, эксперты помогут мне и измените мой запрос в соответствии с вашими требованиями.