apps:
id name
-- --------
1 Facebook
2 Twitter
3 Pokemon
markets:
id app_id code
-- ------ ----
1 1 US
2 1 CA
3 3 CA
Die folgende Abfrage wird die Apps für die USA erhalten:Wie schreibe ich eine SQL-Abfrage, um die Datensätze zu erhalten, wenn es eine Übereinstimmung gibt oder wenn es keine Übereinstimmungen in der zweiten Tabelle gibt?
SELECT *
FROM apps
INNER JOIN markets
ON markets.app_id = apps.id
AND markets.code = 'US'
Aber wie man die oben genannten Aufzeichnungen, sowie alle Anwendungen, die keine Märkte haben?
Die Abfrage zurückkehren würde apps 1 und 2.
PostgreSQL 9.3.5, 9.3.9 und 9.4.7
Es funktioniert. Ist 'markets.id 'gleichwertig? –
@BSeven - ja, es ist gleichwertig. Der Schlüssel besteht darin, die "Null" -Prüfung aus der Tabelle "Märkte" durchzuführen, unabhängig davon, welches Feld geprüft wird. – sgeddes