Я знаю, что это очень тривиальный вопрос, но я не могу найти правильные команды, чтобы получить результат, показанный ниже. Я не мог понять, как использовать NOT EXIST или IN. Обратите внимание, что я использую MS Access.

Следующее дает ошибки:

SELECT T2.* FROM T2
WHERE NOT EXIST
(SELECT T1.* FROM T1)

Мне больше не у кого спросить лично, так как я только изучаю SQL с YouTube. Надеюсь, что кто-нибудь сможет мне помочь.

T1
+-----+------+
| Ind | Val  |
+-----+------+
|  1  |  aa  |
|  2  |  bb  |
+-----+------+

T2
+-----+------+
| Ind | Val  |
+-----+------+
|  1  |  aa  |
|  2  |  bb  |
|  3  |  cc  |
+-----+------+

Result:
+-----+------+
| Ind | Val  |
+-----+------+
|  3  |  cc  |
+-----+------+
0
Emman D. 14 Мар 2018 в 09:12

2 ответа

Лучший ответ

Если вы собираетесь использовать NOT EXISTS, вам необходимо указать, какие столбцы вы сравниваете:

SELECT T2.* FROM T2
WHERE NOT EXIST
(SELECT 1 FROM T1 WHERE T1.ind = T2.ind AND T1.Val = T2.Val)
1
Erik A 14 Мар 2018 в 06:51

Почему бы вам не использовать JOIN. Это намного полезнее и будет работать быстрее на больших таблицах. Другие присоединяются здесь.

select *
from T1 a
right join T2 b on b.key = a.key
where a.key is null
1
Mr.No 14 Мар 2018 в 07:00