Объедините два столбца из разных строк таблицы, используя mysql - PullRequest
0 голосов
/ 21 марта 2019

у меня есть таблицы Student

 --------------
| Name | Grade |
 --------------
 --------------
| John |  A+   |
 --------------
| Tina |  B    |
 --------------

А Тип


 --------------
| Type | Class |
 --------------
 --------------
| Good |  12   |
 --------------
| Avg  |  11   |
 --------------

Теперь я хочу получить результат, объединив их по строкам, чтобы результат запроса SQL был,

 -----------------------------
| Name | Grade | Type | Class |
 -----------------------------
| John |  A+   | Good |  12   |
 -----------------------------
| Tine |  B    | Avg  |  11   |
 -----------------------------

1 Ответ

2 голосов
/ 21 марта 2019

Предполагая, что в каждой таблице одинаковое количество столбцов, вы можете связать их по номеру строки.Без условия ORDER BY, хотя нумерация строк является неопределенной, и вы не можете гарантировать результаты.

В MySQL 5.7 и ниже:

SELECT Name, Grade, Type, Class
FROM (SELECT *, @rownum := @rownum + 1 AS rownum
      FROM Student
      CROSS JOIN (SELECT @rownum := 0) r
      ) s
JOIN (SELECT *, @rownum2 := @rownum2 + 1 AS rownum
      FROM Type
      CROSS JOIN (SELECT @rownum2 := 0) r
      ) t ON t.rownum = s.rownum

В MySQL 8.0 и выше:

SELECT Name, Grade, Type, Class
FROM (SELECT *, ROW_NUMBER() OVER () AS rownum
      FROM Student) s
JOIN (SELECT *, ROW_NUMBER() OVER () rownum
      FROM Type) t ON t.rownum = s.rownum

Вывод:

Name    Grade   Type    Class
John    A+      Good    12
Tina    B       Avg     11

Демонстрация на dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...