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

MySQL levé vnější spojení s klauzulí where - vrátí neshodné řádky

Ano. where klauzule mění levé vnější spojení na vnitřní spojení.

Proč? Hodnota pe.pqid je NULL (stejně jako pe.uid ), když není shoda. Takže porovnání v where klauzule selže (téměř všechna srovnání s NULL vrátí NULL což je považováno za nepravdivé).

Řešením je přesunout porovnání do on klauzule:

SELECT pq.id, pq.data, pe.data
FROM pq LEFT OUTER JOIN
     pe
     ON pq.id = pe.pqid and
        pe.uid='12345'
ORDER BY pq.id LIMIT 2



  1. Svázat průběh dotazu s progressProperty ProgressBar pro informování uživatele o čase stahování a nahrávání v javaFX?

  2. Jak funguje SQLite Max()

  3. Jak používat Fusion Tables s Google Maps API při zachování soukromí?

  4. výjimka zlomeného potrubí s MySql v aplikaci Grails