Выбор объединения:
select * from table1
union
select * from table1_backup
Каков запрос для выбора пересечения?
Выбор объединения:
select * from table1
union
select * from table1_backup
Каков запрос для выбора пересечения?
В SQL Server пересекается
select * from table1 intersect select * from table1_backup
SELECT *
FROM table1
WHERE EXISTS
(SELECT *
FROM table1_backup
WHERE table1.pk = table1_backup.pk)
работы
Для таких вопросов я, как правило, возвращаюсь к этому визуальному ресурсу:
внутреннее соединение я думаю: пусть T1 и T2 имеют одинаковую структуру:
выберите T1. * from Внутреннее соединение T1 T2 на T1.pkField = T2.pkField
"intersect" также является частью стандартного SQL.
Внутреннее соединение дает другой ответ.
вот решение для mySQL:
CREATE TABLE table1(
id INT(10),
fk_id INT(10),
PRIMARY KEY (id, fk_id),
FOREIGN KEY table1(id) REFERENCES another_table(id),
FOREIGN KEY table1(fk_id) REFERENCES other_table(id)
);
SELECT table1.* FROM table1 as t0
INNER JOIN table1 as a ON (t0.id = a.id and fk_id=1)
INNER JOIN table1 as b ON (t0.id = b.id and fk_id=2)
INNER JOIN table1 as c ON (t0.id = c.id and fk_id=3)
ORDER BY table1.id;
В принципе, у вас есть таблица математических подмножеств (например, 1 = {1, 2, 3}, 2 = {3, 4, 2},..., n = {1, 4, 7}) с атрибут id, который является установленным числом, и fk_ id, который ссылается на PRIMARY KEY таблицы элементов, надмножество (что означает возможные значения для чисел в фигурных скобках). Для тех, кто не математически склонен, пусть притворяется, что у вас есть таблица "other_ table", которая представляет собой список элементов, а другая таблица "другая_ таблица", которая представляет собой список номеров транзакций, и обе таблицы образуют - многие отношения, таким образом производя "таблицу1". теперь пусть притворяется, что вы хотите узнать идентификатор в "другой_ таблице", в которой есть пункты 1, 2 и 3., что запрос сделать это.
Пересечение двух одинаковых таблиц a и b может быть выполнено следующим образом:
SELECT a.id, a.name
FROM a INNER JOIN b
USING (id, name)
подзапросов?! на самом деле?
чтобы получить пересечение таблицы1 и таблицы2:
SELECT * FROM table1, table2 WHERE table1.pk=table2.pk;
select distinct * from (select * from table1 union select * from table1_backup)