У меня есть таблицы с t1 по t37. У каждого есть идентификатор первичного ключа. Но у каждой таблицы разное количество идентификаторов. Я хотел бы сравнить идентификаторы в таблицах и получить те, которые имеют хотя бы одно совпадение в другой таблице. Я уже создал запрос, который дает мне результат для следующего примера. Но есть ли способ сделать это, когда у меня большое количество таблиц?
Пример: Если A (1,2,3,4,5,6)
, B (1,7,8)
, C (6,7,8)
, то я должен получить (1,6,7,8)
.
Пример запроса
Схема (PostgreSQL v12)
CREATE TABLE test (
id INT
);
INSERT INTO test (id) VALUES (1);
INSERT INTO test (id) VALUES (2);
INSERT INTO test (id) VALUES (3);
INSERT INTO test (id) VALUES (4);
INSERT INTO test (id) VALUES (5);
INSERT INTO test (id) VALUES (6);
CREATE TABLE test1 (
id INT
);
INSERT INTO test1 (id) VALUES (1);
INSERT INTO test1 (id) VALUES (7);
INSERT INTO test1 (id) VALUES (8);
CREATE TABLE test2 (
id INT
);
INSERT INTO test2 (id) VALUES (6);
INSERT INTO test2 (id) VALUES (7);
INSERT INTO test2 (id) VALUES (8);
Запрос №1
select *
from test
intersect
select *
from test1
union
select *
from test
intersect
select *
from test2
union
select *
from test1
intersect
select *
from test2;
| id |
| --- |
| 6 |
| 7 |
| 1 |
| 8 |