Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql wstaw, jeśli nie istnieje bez unikalnego klucza

Zapytanie powiodło się (w przeciwnym razie mysql_query() nie zwróci true ), ale nie wstawia żadnych wierszy. Jedynym wyjaśnieniem jest to, że SELECT część skutkuje pustym zestawem. Dzieje się tak, ponieważ LEFT JOIN zwraca wiersze, które istnieją w t1 ale nie w t2 , ale wybór odbywa się na NULL wiersze w t1 .

To powinno działać:

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

Zauważ też, że mysql_query() jest przestarzałe. I powinieneś zadeklarować kolumny, które muszą zawierać dane jako NOT NULL , więc NULL nie będą akceptowane. Twoje zapytanie będzie powolne, ponieważ nie używasz indeksów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskiwanie dostępu do mysql XAMPP przez Pythona

  2. Jak programowo ustawić max_connections w MySQL?

  3. Jak zainstalować klejnot MySQL na Mac OS X?

  4. mysql pełnotekstowy DOPASUJ, PRZECIW zwraca 0 wyników

  5. CakePHP 3 - Parse Date z LocalStringFormat do poprawnego formatu SQL i poprawnej walidacji