Как сделать тоже самое на примере MySQL? Как я понимаю, MySQL не поддерживает FULL OUTER JOIN.
SELECT table1.id, table2.id FROM table1
FULL OUTER JOIN table2 ON table1.id = table2.id
WHERE table1.id IS NULL OR table2.id IS NULL;
Mysql умеет выполнять любой join только через nested loops
. Поэтому full outer join
в самом mysql отсутствует вообще, через nested loops
full outer join
не выполнить.
full outer join
от left join
отличается добавлением строк, которые есть только в правой таблице. Ну вот эти строки можно добавить через union вторым запросом. Поэтому для вашего запроса эквивалент можно собрать так:
SELECT table1.id, table2.id FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE table2.id IS NULL
union all
SELECT table1.id, table2.id FROM table2
LEFT JOIN table1 ON table1.id = table2.id
WHERE table1.id IS NULL;
FULL OUTER JOIN
в большинстве случаев можно заменить UNION
с расстановкой данных в нужные колонки и группировкой по общему полю. В вашем случае это будет выглядеть так:
select max(id1),max(id2)
from (
select id,id as id1,NULL as id2 from table1
union all
select id,NULL,id from table2
) A
group by id
having max(id1) is null or max(id2) is null
Но если вы хотите получить все уникальные данные для вставки в другую таблицу, то не понятно, зачем вам нужна выборка в две отдельные колонки, запрос получения уникальных данных в одну колонку был бы проще...
Для случая, что в исходных таблицах id уникальны, это выглядело бы так:
select id
from (
select id from table1
union all
select id from table2
)
group by id
having count(1)=1
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
при написании запросов к базе данных Mysql, возник вопросЯ получаю последнюю запись в бд, выбираю инкрементный ID(первичный ключ), потом увеличиваю...
такая ситуация: есть две таблицы: одна с товарами, другая таблица с ценами на них у поставщиков, те
Возник такой вопрос, у меня страница профиля пользователя определяются GET параметром ( sitecom/profile