2016-03-18 8 views
1

Warum erhalte ich einen Code Fehler 1066. Nicht eindeutige Tabelle/alias usps 75078 auf diesem SQL-Skript:Warum bekomme ich MySQL-Fehler 1066 auf inneren Join?

UPDATE `20160318 flagdatabase`, 
     `usps 75078` 
INNER JOIN `usps 75078` ON `20160318 flagdatabase.Street` = `usps 75078.Street_Name` 
SET `20160318 flagdatabase.Carrier_Route` = `usps 75078.Carrier_Route` 
SET `20160318 flagdatabase.Zip4_Low_Add` = `usps 75078.Zip4_Low_Add` 
SET `20160318 flagdatabase.Zip4_High_Add` = `usps 75078.Zip4_High_Address` 
WHERE `20160318 flagdatabase.Street` = `usps 75078.Street_Name` 
    AND `20160318 flagdatabase.HouseNumber` >= `usps 75078.Primary_Low_Address` 
    AND `20160318 flagdatabase.HouseNumber` <= `usps 75078.Primary_High_Address`; 
+0

Sieht so aus, als wenn Sie eine Tabelle mit sich selbst verbinden, müssen Sie zwei eindeutige Bezeichner verwenden. Siehe [diese Antwort] (http://stackoverflow.com/a/1435186/864233) – romellem

+1

ist '20160318' die Datenbank? Wenn ja, sollte es sein: '20160318.flagdatabase'? Sie haben tatsächlich keine Leerzeichen in Ihren Spalten-/Tabellennamen? Das macht es interessant zu lesen und zu pflegen? Bitte fügen Sie die Tabelle create statements zu Ihrer Frage hinzu, damit ich verstehen kann, was wirklich passiert? –

Antwort

0

Ich glaube, Sie benötigen, um Ihre Abfrage zu beheben, und es wie folgt verlassen:

UPDATE `20160318 flagdatabase`, 
INNER JOIN `usps 75078` ON `20160318 flagdatabase.Street` = `usps 75078.Street_Name` 
SET `20160318 flagdatabase.Carrier_Route` = `usps 75078.Carrier_Route`, 
`20160318 flagdatabase.Zip4_Low_Add` = `usps 75078.Zip4_Low_Add`. 
`20160318 flagdatabase.Zip4_High_Add` = `usps 75078.Zip4_High_Address` 
WHERE `20160318 flagdatabase.Street` = `usps 75078.Street_Name` 
    AND `20160318 flagdatabase.HouseNumber` >= `usps 75078.Primary_Low_Address` 
    AND `20160318 flagdatabase.HouseNumber` <= `usps 75078.Primary_High_Address`; 
1

Ihre Abfrage ist aufgrund der (wahnsinnigen) Verwendung von Punkten und Leerzeichen in Tabellennamen sehr schwer zu lesen, daher werde ich die Verwendung von Platzhalternamen paraphrasieren.

Ihre Anfrage wie folgt aussieht:

update t1, t2 join t2 on some condition 
... 

die T2 zweimal in der Abfrage auflistet. Sie müssen (mindestens) geben eine der T2 verweist auf ein alias, und dass Alias ​​anstelle des Tabellennamen in der Abfrage, wie folgt aus:

update t1, t2 join t2 as t3 on some condition 
... 

Hier habe ich „T3“, wie die verwendete alias.

Verwandte Themen