De query is succesvol (anders mysql_query() zou true niet retourneren ) maar er worden geen rijen ingevoegd. De enige verklaring daarvoor is dat de SELECT deel resulteert in een lege set. Dat komt omdat de LEFT JOIN retourneert rijen die bestaan in t1 maar niet in t2 , maar de selectie gebeurt op NULL rijen in t1 .
Dit zou moeten werken:
INSERT teamshalf
(`yearID` , `lgID` , `teamID` , `Half` ,
`divID` , `DivWin` , `Rank` , `G` , `W` , `L`)
SELECT DISTINCT t1.`yearID` , t1.`lgID` , t1.`teamID` ,
t1.`Half` , t1.`divID` , t1.`DivWin` , t1.`Rank` , t1.`G` , t1.`W` , t1.`L`
FROM `teamshalf_TEMP` t1 LEFT JOIN `teamshalf` t2 ON t1.`yearID` = t2.`yearID`
AND t1.`lgID` = t2.`lgID` AND t1.`teamID` = t2.`teamID`
AND t1.`Half` = t2.`Half` AND t1.`divID` = t2.`divID`
AND t1.`DivWin` = t2.`DivWin` AND t1.`Rank` = t2.`Rank`
AND t1.`G` = t2.`G` AND t1.`W` = t2.`W` AND t1.`L` = t2.`L`
WHERE t2.`yearID` IS NULL
Merk ook op dat mysql_query() wordt afgeraden. En u moet kolommen die gegevens moeten bevatten declareren als NOT NULL , dus NULL zal niet worden geaccepteerd. En uw zoekopdracht zal traag zijn, omdat u geen indexen gebruikt.