La consulta es exitosa (de lo contrario, mysql_query()
no devolvería true
) pero no inserta ninguna fila. La única explicación para eso es que SELECT
parte da como resultado un conjunto vacío. Eso es porque LEFT JOIN
devuelve filas que existen en t1
pero no en t2
, pero la selección se realiza en NULL
filas en t1
.
Esto debería funcionar:
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
También tenga en cuenta que mysql_query()
es obsoleto. Y debe declarar las columnas que deben contener datos como NOT NULL
, entonces NULL
no será aceptado. Y su consulta será lenta, porque no está usando índices.