2015-07-18 5 views
0

У меня есть две таблицы моей базы данных. Я просто хочу добавить эти две таблицы. Я не в состоянии найти решение для егоДобавление двух таблиц без столбца в MySQL

Таблица 1 -

names 
    First_name Last_name 
     Navjot  Singh 
     Ram   Gopal 
     Naveen   Kumar 

Таблица 2 -

address 
      address Pin 
      Delhi 90007 
      Lucknow 90003 
      Mumbai 60008 

Как получить данные из этих двух таблиц в следующем формате:

First_name  Last_name  address  Pin 

    Navjot  Singh   Delhi  90007 
    Ram   Gopal   Lucknow  90003 
    Naveen  Kumar   Mumbai  60008 

Это только примеры таблиц. Я хочу сделать это на 50 000 строк. Количество строк одинаково в моих обеих таблицах. Я пробовал перекрестное соединение. Я также пробовал следующий sql:

Выбрать * по названию, адресу;

Увеличивает общее количество строк. Я даже пытался объединиться, но это не сработало.

Это что-то вроде cbind.data.frame в R. Как это сделать в mysql? любая помощь будет оценена.

+0

В принципе, это не возможно. У вас нет ничего, что связывает строку в первой таблице со строкой во второй. – Strawberry

ответ

0

Проблема в том, что у вас нет столбца для соединения. Если предположить, что у вас есть столбец, чтобы указать порядок, вы можете сделать:

select t1.*, t2.* 
from (select t.*, (@rn := @rn + 1) as seqnum 
     from table1 t cross join (select @rn := 0) params 
     order by t.id 
    ) t1 join 
    (select t.*, (@rn2 := @rn2 + 1) as seqnum 
     from table2 t cross join (select @rn2 := 0) params 
     order by t2.id 
    ) t2 
    on t1.seqnum = t2.seqnum; 

Это создает последовательный ключ для каждой строки в каждой из таблиц. Затем этот ключ используется для соединений.

+0

Вот что я получаю за ответ от своего телефона. Почти такой же результат – MiltoxBeyond

+0

@dnapierata. , , Прочтите контекст этого утверждения. Это предупреждение на самом деле об использовании переменных в нескольких * выражениях * в том же 'select', а не о чтении значения из одного выражения. Хотя язык немного неоднозначен, в примерах очень ясно, что предупреждение применяется для назначения переменной в одном выражении и чтения переменной в другой. –

+0

@ GordonLinoff Моя ошибка. После прочтения вашего заявления вы фактически оцениваете только одну переменную для 'select', поэтому неопределенный характер способа интерпретации переменных MySQL не должен влиять на запрос. – dnapierata

0

Там может быть проще, но с верхней части моей головы

Select I.*, j.* from 
    (Select *, @row:@row+1 as rowid from names) I 
Left join 
    (Select *, @adid:@adid+1 as rowid from address) j 
Using(rowid); 
+0

Опасность использования переменных сеанса в инструкции SQL без их инициализации. –

Смежные вопросы