Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL ha lasciato il join esterno con clausola where - restituisce righe non corrispondenti

Sì. Il where La clausola sta trasformando il join esterno sinistro in un join interno.

Come mai? Il valore di pe.pqid è NULL (come pe.uid ) quando non c'è corrispondenza. Quindi il confronto nel where clausola fallisce (quasi tutti i confronti con NULL restituisce NULL che è considerato falso).

La soluzione è spostare il confronto su on clausola:

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