So können Sie dies tun
select @rn:example@sqldat.com+1 as id,colors from (
(select @rn1:= @rn1+1 as rn,colors from table1,(select @rn1:=0)x order by id )
union all
(select @rn2:= @rn2+1 as rn,numbers as colors from table2,(select @rn2:=0.5)x order by id)
union all
(select @rn3:= @rn3+1 as rn,names as colors from table3,(select @rn3:=0.6)x order by id )
)x,(select @rn:=0)y order by rn ;
Die Idee ist, einen rn zuzuweisen Wert für jedes Tabellenelement und müssen sicherstellen, dass diese Werte immer in aufsteigender Reihenfolge sind
Wenn Sie also die Abfrage für jede Tabelle ausführen, erhalten Sie
mysql> select @rn1:= @rn1+1 as rn,colors from table1,(select @rn1:=0)x order by id;
+------+--------+
| rn | colors |
+------+--------+
| 1 | red |
| 2 | green |
| 3 | blue |
| 4 | yellow |
+------+--------+
4 rows in set (0.00 sec)
mysql> select @rn2:= @rn2+1 as rn,numbers as colors from table2,(select @rn2:=0.5)x order by id;
+------+--------+
| rn | colors |
+------+--------+
| 1.5 | ten |
| 2.5 | two |
| 3.5 | one |
| 4.5 | three |
| 5.5 | six |
| 6.5 | five |
+------+--------+
6 rows in set (0.00 sec)
mysql> select @rn3:= @rn3+1 as rn,names as colors from table3,(select @rn3:=0.6)x order by id;
+------+--------+
| rn | colors |
+------+--------+
| 1.6 | jack |
| 2.6 | peter |
+------+--------+
2 rows in set (0.00 sec)
Hier sehen Sie table1 rn Werte sind 1,2,3,.... table2 Werte sind 1.5,2.5,3.5,.... table3 Werte sind 1.6,2.6,....
Wenn Sie also das Ergebnis mit allen rn bestellen, wird es als
angezeigt
1,1.5,1.6,2,2.5,2.6,....