Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysql सम्मिलित करें यदि अद्वितीय कुंजी के बिना मौजूद नहीं है

क्वेरी सफल है (अन्यथा 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 स्वीकार नहीं किया जाएगा। और आपकी क्वेरी धीमी होगी, क्योंकि आप अनुक्रमणिका का उपयोग नहीं कर रहे हैं।



  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:इंडेक्स टेबल पर utf8 चारसेट और डुप्लीकेट की एरर

  2. सही तालिका से खाली परिणाम के साथ आंतरिक शामिल हों

  3. टूल जो mySQL क्वेरी को ज़ेंड फ्रेमवर्क क्वेरी में कनवर्ट करता है

  4. अपडेट पर बिना बदलाव के टाइमस्टैम्प

  5. सी # मैसकल एक्ज़िक्यूटनक्वेरीसिंक एसिंक्रोनस नहीं है