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. SET и Select Query комбинират Run в единична MySql заявка, за да предадат резултат в pentaho

  2. Тествайте за NULL в множество колони в MySQL

  3. Дата и време СЕГА PHP mysql (+ PDO вариант)

  4. Ефективен начин за запазване на масив и неговите ключове в база данни

  5. cURL и PHP показват 1