Select über zwei Tabellen, im Ergebnis matches und neue aus der linken ausschliessen

Hallo zusammen,

ich brauche mal kurz Hilfe bei einer wahrscheinlich einfachen Fragestellung. Ich habe folgende zwei Tabellen:

test_a

 id | value 
----+-------
  1 |     1
  2 |     1
  3 |     1
  4 |     1
  5 |     2
  6 |     2
  7 |     2
  8 |     3

test_b

 id | value 
----+-------
  6 |     3
  7 |     3
  8 |     4
  9 |     1
 10 |     1

Wie muss eine Abfrage aussehen, welche mir aus Tabelle test_a die Datensätze ausgibt, welche in Tabelle test_b beim Matchen über ID nicht vorhanden sind. Ich würde dabei eine Subquery mit “not in” gerne vermeiden.

Danke und Gruß,
Florian

Warum?


Aber es geht natürlich auch mit not exists

select id, value
from table_a
where not exists (select 42 from table_b where table_b.id = table_a.id);