Oui. Le where clause transforme la jointure externe gauche en jointure interne.
Pourquoi? La valeur de pe.pqid est NULL (comme pe.uid ) lorsqu'il n'y a pas de correspondance. Donc la comparaison dans le where la clause échoue (presque toutes les comparaisons avec NULL renvoie NULL qui est considéré comme faux).
La solution est de déplacer la comparaison vers le on clause :
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