SQL-запрос с обоими столбцами таблицы - Oracle - PullRequest
0 голосов
/ 24 мая 2018

Есть две таблицы с именами, например A и B.

A и B имеют уникальный столбец с именем key_ref.и key_ref является первичным ключом обеих таблиц

Мне нужно найти записи в A, но не в B. Поэтому я написал запрос вроде

SELECT a.*,b* from A a,B b WHERE key_ref NOT IN (SELECT key_ref from B)

Проблема в том, что яне получить пустые столбцы таблицы B для результата.Мой результат должен включать все столбцы A и B.

Если я напишу свой запрос, как будто мои результаты ошибочны.Есть ли способ, где я могу достичь этого даже с условием соединения.

SELECT a.* from A a WHERE key_ref NOT IN (SELECT key_ref from B)

Пожалуйста, обратитесь к следующему примеру.

Table A                            Table B

key ref  col1                   key ref  col2

 A        aaa                    A        aaa
 B        bbb                    B        bbb
 C        ccc                    C        ccc
 D        ddd

Мой ответ должен быть,

key ref  col1   col2

D        ddd

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

Это то, что вам нужно:

select * from A
except
select * from B

?

0 голосов
/ 24 мая 2018

Если вторая таблица tableB не имеет записи, связанной с первой таблицей, то как бы вы отображали запись из второй таблицы tableB , которая не являетсясуществует в первой таблице tableA .

Итак, один из способов - включить NULL в качестве столбцов ref. таблица B , например:

select a.*, null col2
from tableA a
where not exists (select 1 from tableB b where b.key_ref = a.key_ref);
0 голосов
/ 24 мая 2018

Если я понимаю ваш запрос:

Вы можете использовать операцию LEFT OUTER JOIN, чтобы получить все строки в A, отсутствующие в B (с условием в WHERE b.key_ref IS NULL)

Попробуйте это:

SELECT *
FROM a
LEFT OUTER JOIN b
ON a.key_ref = b.key_ref
WHERE b.key_ref IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...