sql >> Databasteknik >  >> RDS >> Mysql

Left Outer Join returnerar inte alla rader från mitt vänstra bord?

Nannes svar given förklarar varför du inte får det önskade resultatet (din WHERE-sats tar bort rader), men inte hur du fixar det.

Lösningen är att ändra WHERE till AND så att villkoret är en del av kopplingsvillkoret, inte ett filter som tillämpas efter kopplingen:

SELECT day.days, COUNT(*) as opens 
FROM day 
LEFT OUTER JOIN tracking
ON day.days = DAY(FROM_UNIXTIME(open_date)) 
AND tracking.open_id = 10 
GROUP BY day.days

Nu kommer alla rader i den vänstra tabellen att finnas i resultatet.



  1. Zip med Oracle Stored Procedure

  2. Använder parameter som kolumnnamn i Postgres-funktionen

  3. Hur CHARINDEX()-funktionen fungerar i SQL Server (T-SQL)

  4. mysqldump bästa praxis:Del 1 – MySQL-förutsättningar