Мне нужно вернуть различия между двумя таблицами.Как сделать запрос, который будет возвращать различия между двумя таблицами в PostgreSQL
создавать временные таблицы
CREATE TEMP TABLE first(
zoom smallint NOT NULL,
x integer NOT NULL,
y integer NOT NULL
);
CREATE TEMP TABLE second(
zoom smallint NOT NULL,
x integer NOT NULL,
y integer NOT NULL
);
ВСТАВИТЬ DATA
INSERT INTO first(zoom,x,y) VALUES(5,2,25);
INSERT INTO first(zoom,x,y) VALUES(5,4,45);
INSERT INTO first(zoom,x,y) VALUES(5,7,34);
INSERT INTO first(zoom,x,y) VALUES(5,45,40);
INSERT INTO first(zoom,x,y) VALUES(5,72,63);
INSERT INTO second(zoom,x,y) VALUES(5,2,25);
INSERT INTO second(zoom,x,y) VALUES(5,4,45);
INSERT INTO second(zoom,x,y) VALUES(5,7,34);
Wanted результат:
In table first there are extra rows:
5,45,40
5,72,63
Редактировать
Извините, но я понял, что мои исходные данные в значительной степени сложны, чем образец, который я предоставил. Поэтому в исходных данных таблица сначала состоит из 900 строк, а вторая - из 935 строк. Я предположил, что строки различны в каждой таблице, однако, поскольку я не уверен сейчас, поэтому я хотел бы включить это условие в запрос. Я предположил, что запрос вернет 35 строк в качестве различия, потому что я был очень уверен, что все zoom/x/y будут такими же, кроме этого 35. Однако теперь это может быть так. Поэтому в основном то, что мне нужно знать, это различия между двумя таблицами, независимо от того, какой подход лучше всего решить.
Могу ли я получить что-то вроде этого:
zoom | x | y | first |second
------+----+--- +-------+------
5 | 45 | 40 | yes | no |
заказ на первый да, второй нет
zoom | x | y | first |second
------+----+--- +-------+------
5 | 45 | 40 | yes | no |
5 | 45 | 40 | yes | no |
5 | 45 | 40 | yes | no |
тогда первый нет, второй да
zoom | x | y | first |second
------+----+--- +-------+------
5 | 45 | 40 | no | yes |
5 | 45 | 40 | no | yes |
5 | 45 | 40 | no | yes |
Вы заинтересованы только в случае примера (строки, которые находятся в «первой» таблице, но не во втором) или также в другом случае? – Insac
После вашего «редактирования»: возможно, вы должны удалить последнее «первое нет, второе нет»: если обе таблицы не имеют строк, где должен выполняться запрос этих строк? – Insac
@Insac Спасибо, что –