@milko10

Как вставить все значения у всех таблиц через JOIN?

Мне нужно выести из 2-х таблиц все ЗНАЧЕНИЯ. Я их объединяю, но выводятся только значения из одного столбца ( я так полагаю, что другие не вывелись из-за того что они не идут на одной линии) как сделать чтобы вывелись вообще все записи?

INSERT INTO main (table1_id, table2_id) 
SELECT t1.ID, t2.ID
FROM table1 t1
RIGHT JOIN table2 t2
ON t1.ID = t2.ID;
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 3
@alexalexes
Так:
SELECT *
FROM table1 t1
RIGHT JOIN table2 t2
ON t1.ID = t2.ID;

или так:
SELECT t1.*, t2.*
FROM table1 t1
RIGHT JOIN table2 t2
ON t1.ID = t2.ID;

А зачем вам insert, когда задача на "вывести"?
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
JOIN - это не объединение, а декартово произведение (с фильтрацией по ON).
Для объединения используется UNION.
SELECT `ID`
  FROM `table1`
UNION ALL SELECT `ID`
  FROM `table2`
Ответ написан
Комментировать
@Akina
Сетевой и системный админ, SQL-программист.
При всей неизбывной глупости такого решения:

INSERT INTO main (table1_id, table2_id) 
WITH 
cte1 AS ( SELECT id, ROW_NUMBER() OVER (ORDER BY id) rn FROM table1 ),
cte2 AS ( SELECT id, ROW_NUMBER() OVER (ORDER BY id) rn FROM table2 )
SELECT cte1.ID, cte2.ID
FROM cte1
JOIN cte2 USING (rn);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы