2017-10-11 3 views
0

Also habe ich eine Liste von Leuten, die ich von Tisch bekam 1.Überprüfen Sie eine Tabelle gegen eine andere Tabelle SQL

SELECT UA.user FROM UserAcct UA 

Ich habe eine andere Tabelle, die ich brauche vor zu überprüfen, um sicherzustellen, dass der Benutzer nicht aufgeführt ist in Tabelle 2.

LEFT OUTER JOIN AccountsLog AL ON AL.user = UA.user 

letztlich zu tun, was ich versuche, ist sicherzustellen, dass die Menschen aus Tabelle 1 eine Aktion auf dem Tisch 2 durchgeführt haben, sonst wird ihr Name zurückgegeben werden. Wenn Sie diese Aktion ausführen, wird ihr Name in Tabelle 2 angezeigt. Jede Hilfe hier wird sehr geschätzt. Ich freue mich darauf, weiter zu arbeiten, wenn das nicht genug Informationen sind. Vielen Dank!

+2

Versuchen Sie 'WHERE AL.User IS NULL' in Ihrem Join oder versuchen Sie' WHERE EXISTS (select ...) ' –

+1

Also, was ist los mit? Was genau willst du machen? Könntest du es klarstellen? –

+1

@WEI_DBA Ja, ja, ich tue ... :) –

Antwort

2

, wenn Sie einen linken Außen treten zu finden Datensätze in TABELLE A, die nicht in Tabelle B enthalten sind, suchen Sie einfach nach NULL.

Also, wenn Sie LEFT OUTER die Tabellen auf ON AL.user = UA.user JOIN, können Sie dann mit der Klausel, die fehlenden Aufzeichnungen finden:

WHERE AL.user IS NULL 
+0

Das hat perfekt funktioniert, danke !!!! – snapper

1

Also, wenn ich das richtig verstanden, Sie Alles, was von User mögen, die nicht in AccountsLog vorhanden ist, ich glaube, Sie auf dem richtigen Weg sind

SELECT UA.user FROM UserAcct UA 
LEFT OUTER JOIN AccountsLog AL ON UA.user = AL.user 
WHER AL.User is null -- this will give you anything that is on user and not in accountslog 

Grüße

0

Dadurch werden die Benutzer nur auf UA geben und nicht auf

AL
SELECT UA.user FROM UserAcct UA 
MINUS 
SELECT AL.user FROM AccountsLog AL 

Edit: - für SQL Server verwenden AUSSER statt MINUS (unterstützt durch Oracle)

+1

'MINUS' ist ein Oracle-spezifischer Operator. Im SQL-Standard (und SQL Server) wäre das "AUSSER" –

+0

Oh yeah .. Ich habe seinen SQL Server nicht gesehen. Dann sollte es außer und nicht minus sein – Valli

0

Wenn Ihre Version von SQL unterstützt, versuchen sie nicht Exists verwenden. Subqueries with NOT EXISTS. Ich habe festgestellt, dass es schneller ist als "linke äußere Joins und Filtern nach Nullwerten".

Verwandte Themen