да where
клауза превръща лявото външно съединение във вътрешно съединение.
Защо? Стойността на pe.pqid
е NULL
(както е pe.uid
), когато няма съвпадение. Така че сравнението в where
клаузата е неуспешна (почти всички сравнения с NULL
върне NULL
което се счита за невярно).
Решението е да преместите сравнението към on
клауза:
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