Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL pozostawił sprzężenie zewnętrzne z klauzulą ​​WHERE - zwróć niedopasowane wiersze

TAk. where klauzula zmienia lewe sprzężenie zewnętrzne w sprzężenie wewnętrzne.

Czemu? Wartość pe.pqid jest NULL (tak jak pe.uid ), gdy nie ma dopasowania. Więc porównanie w where klauzula nie działa (prawie wszystkie porównania z NULL zwróć NULL co jest uważane za fałszywe).

Rozwiązaniem jest przeniesienie porównania do on klauzula:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL powiedział:#1415 – Nie wolno zwracać zestawu wyników z funkcji

  2. Mysql:jak wybrać grupy posiadające określone wartości?

  3. Nie widzę od razu wstawionych danych z MySQL

  4. Projekt MySQL z dynamiczną liczbą pól

  5. Konstruktor zapytań Doctrine/Symfony dodaj zaznacz przy lewym dołączeniu