Encoder: Verhalten von "IN" in WHERE klausel / LEFT JOIN auch bei NULL ?

Beitrag lesen

Betrachten wirs mal nüchtern.

Kurz gesagt, geht er bei "IN" direkt auf die Index Schlüssel oder lädt er doch die ganze Tabelle ?

Die Frage ist bei OR doch die selbe. Auch hier könnte man denken dass die DB alles durchgeht und prüft. Oder halt auch nicht.
Wo siehst du da einen Unterschied?

Meine 2te frage. Wenn ich "abc IN (1,5,7,5)" mache, wir der 2te "5" unterschlagen bei der Ausgabe, wie kann ich es machen das trotz doppelter Einträge bei der Ausgabe wirklich alle ausgegeben werden ?

Versteh ich jetzt nicht. IN (...) gibt eine Menge an, in der ein Wert vorkommen soll.
Auch hier gibts keinen Unterschied zu Wert=1 OR Wert=5 OR Wert=7 OR Wert=5.
Meinst du dass die 5 mehrmals in der Tabelle steht und du kriegst nur eine dieser Zeilen zurück, weil nur ein Fünfer im IN steht? Da kommt schon alles was fünf ist.

Meine frage nun dazu ist, wenn t3.ex2 keinen wert hat, ob MySQL diesen LEFT JOIN dann ignoriert als würde er gar nicht da stehen ?

Das ist der Sinn vom LEFT JOIN. Die Zeile aus table kommt dann trotzdem, auch wenn es keinen Eintrag in der mit LEFT gejointen Tabelle gibt. Wie Ilja sagt, wenn du im WHERE auch noch irgendwas einschränkst, siehst natürlich wieder anders aus.