sql >> Databasteknik >  >> RDS >> Mysql

MySQL lämnade yttre sammanfogning med where-sats - returnera omatchade rader

Ja. var sats är att förvandla den vänstra yttre kopplingen till en inre koppling.

Varför? Värdet på pe.pqid är NULL (som är pe.uid ) när det inte finns någon matchning. Så jämförelsen i where sats misslyckas (nästan alla jämförelser med NULL returnera NULL vilket anses vara falskt).

Lösningen är att flytta jämförelsen till on klausul:

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



  1. Inkludera en komplex logik i en enda MySQL-fråga

  2. SQL Data Manipulation Language

  3. MySQL - Välj kolumn från en annan tabell via en referenstabell

  4. SQL Välj endast rader där exakta flera relationer finns