Как я могу соединить две таблицы в (My) SQL? - PullRequest
0 голосов
/ 02 ноября 2019


Мне нужно объединить две таблицы вместе. Я знаю, что в MySQL есть JOIN, но те результаты, которые я получил, были не очень хороши для моих целей.

Example: 
Say, I have two tables:
a = 
{[1, 2]} 
{[3, 4]} 

b = 
{[5, 6]} 
{[7, 8]} 

Когда я теперь присоединяюсь к ним, используя команду JOIN в MySQL, результат выглядит примерно так:

result = 
{[1, 2], [5, 6]}  
{[3, 4], [5, 6]}  
{[1, 2], [7, 8]}  
{[1, 2], [7, 8]} 

но что янужно что-то вроде

result =  
{[1, 2], [5, 6]} 
{[3, 4], [7, 8]} 

Если у кого-нибудь есть идеи, как это сделать с помощью довольно простого SQL-скрипта, я был бы очень благодарен: D



Привет :)

1 Ответ

0 голосов
/ 02 ноября 2019

У вас нет ключа join. Похоже, вам нужны данные «бок о бок».

Вы можете сделать это, используя row_number() для генерации ключа join:

select a.*, b.*
from (select a.*,
             row_number() over () as seqnum
      from a
     ) a join
     (select b.*,
             row_number() over () as seqnum
      from b
     ) b
     on a.seqnum = b.seqnum;

Примечание. Это негарантированно сохранить порядок строк в таблицах. Он просто поместит значения бок о бок.

В старых версиях вы можете использовать переменные для этой цели:

выберите a. , b. из (выберите a. , (@rna: = @rna + 1) как последовательность из перекрестного соединения (выберите @rna: = 0) параметров) объединения (выберите b. , (@rnb: = @rnb)+ 1) как последовательность из b перекрестного соединения (выберите @rnb: = 0) параметров) b на a.seqnum = b.seqnum;

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