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