TAk. where
klauzula zmienia lewe sprzężenie zewnętrzne w sprzężenie wewnętrzne.
Czemu? Wartość pe.pqid
jest NULL
(tak jak pe.uid
), gdy nie ma dopasowania. Więc porównanie w where
klauzula nie działa (prawie wszystkie porównania z NULL
zwróć NULL
co jest uważane za fałszywe).
Rozwiązaniem jest przeniesienie porównania do on
klauzula:
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