Priorisieren Sie JOIN für mehrere Spalten mit einem OR

8

Ich versuche, die Quelle von Kommentaren auf einer Blog-Site zu verfolgen, und meine Frage bezieht sich auf die Priorität, bei der mehrere Spalten mit einer OR -Anweisung verbunden werden.

Die Kommentartabelle:

%Vor%

Wenn ich eine Abfrage wie folgt habe:

%Vor%

Es gibt Situationen, in denen wir die Benutzerquelle, aber NICHT die Sitzungsquelle kennen (weshalb ich OR verwendet habe), aber ich möchte die session_source_id priorisieren, wenn wir auch eine user_source_id und unterscheiden sich diese beiden IDs.

(es gibt auch Situationen, in denen wir keine der beiden Quellen kennen und beide Spalten null sind, also LEFT JOIN )

Priorisiert die Abfrage den JOIN auf session_source_id, da dieser in der Joining-Anweisung OR zuerst aufgeführt wird? Wie behandelt Postgres ODER-Bedingungen in JOIN-Anweisungen?

    
dizzyf 31.10.2016, 15:26
quelle

2 Antworten

1

GarethDs Kommentar als Antwort und Wiki posten, damit es nicht verloren geht:

Versuchen Sie COALESCE anstelle von OR ...

%Vor%     
TheGameiswar 12.12.2016, 20:49
quelle
2

Bei Verwendung von OR werden die Bedingungen nicht priorisiert. Wenn beide Bedingungen erfüllt sind, werden beide Datensätze zurückgegeben.
Wenn Sie eine Priorität haben möchten, können Sie CASE EXPRESSION verwenden, was den Moment bricht, in dem eine Bedingung erfüllt ist:

%Vor%     
sagi 31.10.2016 15:31
quelle

Tags und Links