sql >> Base de Datos >  >> RDS >> Mysql

MySQL dejó la unión externa con la cláusula where:devuelve filas no coincidentes

Sí. El where cláusula está convirtiendo la combinación externa izquierda en una combinación interna.

¿Por qué? El valor de pe.pqid es NULL (como es pe.uid ) cuando no hay coincidencia. Así que la comparación en el where la cláusula falla (casi todas las comparaciones con NULL devuelve NULL que se considera falso).

La solución es mover la comparación a on cláusula:

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