Ja. Das where -Klausel verwandelt den linken äußeren Join in einen inneren Join.
Wieso den? Der Wert von pe.pqid ist NULL (ebenso wie pe.uid ) wenn es keine Übereinstimmung gibt. Also der Vergleich im where -Klausel schlägt fehl (fast alle Vergleiche mit NULL gibt NULL zurück was als falsch angesehen wird).
Die Lösung besteht darin, den Vergleich nach on zu verschieben Klausel:
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