क्वेरी सफल है (अन्यथा mysql_query()
true
नहीं लौटाएगा ) फिर भी यह कोई पंक्तियाँ सम्मिलित नहीं करता है। इसके लिए एकमात्र स्पष्टीकरण यह है कि SELECT
भाग एक खाली सेट में परिणाम देता है। ऐसा इसलिए है क्योंकि LEFT JOIN
t1
. में मौजूद पंक्तियों को लौटाता है लेकिन t2
. में नहीं , लेकिन चयन NULL
. पर किया जाता है t1
. में पंक्तियां ।
यह काम करना चाहिए:
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
यह भी ध्यान दें कि mysql_query()
पदावनत किया गया है। और आपको ऐसे कॉलम घोषित करने चाहिए जिनमें डेटा होना चाहिए NOT NULL
, इसलिए NULL
स्वीकार नहीं किया जाएगा। और आपकी क्वेरी धीमी होगी, क्योंकि आप अनुक्रमणिका का उपयोग नहीं कर रहे हैं।