ich folgende Abfrage haben:SELECT IN mit leeren Unterabfrage gibt seltsame Ergebnis
SELECT * FROM `table1` WHERE `id` IN
(
SELECT `table1_id` FROM `table2` WHERE `id` in
(
SELECT `table2_id` FROM `table3` WHERE `customer_id` = 57
)
)
Es 10 Zeilen zurückgibt (von 50)
aber die Abfrage
SELECT `table1_id` FROM `table2` WHERE `id` in
(
SELECT `table2_id` FROM `table3` WHERE `customer_id` = 57
)
0 zurück Reihen (welches ist richtig).
Also, wie kommt es, dass meine erste Abfrage mehrere Zeilen zurückgibt, während es 0 zurückgeben soll (wie die Unterabfrage).
Wenn ich eine customer_id verwende, die Zeilen bei der zweiten Abfrage zurückgeben soll, geht alles wie es sein soll.
Also meine Frage ist, warum tun:
Warum gibt die Abfrage Zeilen zurück, während die Unterabfrage nicht?
Könnten Sie nicht beitreten zu vermeiden sein, nur um 'table2',' table3' und Umsetzung der 'customer_id' in eine WHERE 'anstatt mehrere Unterabfragen zu verschachteln? – Santi
@Abhi Dies ist keine korrelierte Unterabfrage. – Barmar
Wenn das wirklich passiert, klingt es wie ein Fehler. Können Sie einige Beispieldaten bereitstellen, die das demonstrieren? – Barmar