sql >> Databáze >  >> RDS >> Mysql

Levé vnější spojení nevrací všechny záznamy z primární tabulky

Vaše klauzule where převádí vnější spojení zpět na vnitřní.

Neodpovídající řádky zachované outer join všechny budou mít NULL hodnoty pro documentation.status takže váš documentation.status != 3 podmínka je odfiltruje (Výsledek výrazu NULL !=3 je unknown není true ).

Chcete-li se tomuto problému vyhnout, použijte

select documentation_reference.ref_docnumber,
       documentation.filename
from   documentation_reference
       left outer join documentation
         on ref_docnumber = documentation.docnumber
            and documentation.status != 3
where  documentation_reference.docnumber = 'TP-036'  

Všimněte si, že documentation.status != 3 predikát se přesune do JOIN podmínka.



  1. Vyhledávací databáze CHOP pomocí LIKE

  2. mariadb Regexp někdy vrátí prázdný v uložené proceduře

  3. Hierarchické dotazy v SQL Server 2005

  4. Perl DBI - spusťte SQL skript s více příkazy