Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да сортирате алтернативно резултата от множество заявки?

Ето как можете да направите това

select @rn:[email protected]+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 ;

Идеята е да се присвои rn стойност за всеки елемент от таблицата и трябва да се уверите, че тези стойности винаги са във възходящ ред

Така че, ако изпълните заявката за всяка таблица, ще имате

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)

Тук можете да видите table1 rn стойностите са 1,2,3,.... table2 стойностите са 1.5,2.5,3.5,.... table3 стойностите са 1.6,2.6,....

така че накрая, когато подредите резултата с всички rn, той ще бъде като

1,1.5,1.6,2,2.5,2.6,....




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да намеря един от многото възможни модели сред един запис в mySQL? Още вътре

  2. mysqli автоматично увеличава основния идентификатор, който е генериран

  3. Как форумите ви показват непрочетени теми?

  4. Защо mysqli_real_escape_string има обект на връзка като първи параметър

  5. Достъп до mysql база данни от външен хост/ip? (т.е.:mysql работна маса)