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?
GarethDs Kommentar als Antwort und Wiki posten, damit es nicht verloren geht:
Versuchen Sie COALESCE anstelle von OR ...
%Vor% 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:
Tags und Links sql postgresql join