2011-12-15 3 views
2

Je viens de le faire il y a quelques heures, mais maintenant je ne suis pas capable de répéter mon "exploit".Impossible de mettre à jour la table d'une autre table

C'est ce que je suis en train de faire:

UPDATE TABLE sl_adr a, sl_address b 
SET a.fk_adrID = b.id 
WHERE a.street1 = b.street1 
AND a.postal_code = b.postal_code 
AND a.city = b.city 
AND a.fk_countryID = b.fk_countryID 

L'exécution de ce que je reçois une erreur:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
'UPDATE TABLE sl_adr a, sl_address b
SET a.fk_adrID = b.id
WHERE a.street1 = b.'
at line 1

Après googler et regarder ici, je ne peux toujours pas savoir ce qui est faux.

Dans Crapaud je peux voir que le a nous souligné avec le rouge. Mais ne comprends pas pourquoi.

+0

Vous ne alias normalement pas la table que vous mettez à jour .. aliasing vient dans la section 'FROM', n'est-ce pas? Ou attendre .. peut-être que je suis trop endormi – Nonym

+0

Je travaille depuis presque 20 heures maintenant .... donc ma tête n'est pas là - mais oui, selon différentes recherches, je suis capable d'utiliser des alias. – Steven

+0

avez-vous essayé d'utiliser un alias différent, semble trivial mais vaut la peine d'être photographié. – Robert

Répondre

3

Votre requête est presque OK, seul le mot clé TABLE est redondant.

UPDATE 
    sl_adr a, sl_address b 
SET 
    a.fk_adrID = b.id 
WHERE 
    a.street1 = b.street1 
    AND a.postal_code = b.postal_code 
    AND a.city = b.city 
    AND a.fk_countryID = b.fk_countryID 

aussi, celui-ci est possible -

UPDATE sl_adr a 
JOIN sl_address b 
    ON a.street1 = b.street1 
    AND a.postal_code = b.postal_code 
    AND a.city = b.city 
    AND a.fk_countryID = b.fk_countryID 
SET 
    a.fk_adrID = b.id 
+0

Oh .... (se sent stupide). C'est ce que je reçois pour travailler jusqu'à 04h00 du matin :) – Steven

0

Aliasing est tout à fait bien dans les déclarations de mise à jour. Je pense que le problème ici est que vous devez remplacer UPDATE TABLE avec juste UPDATE. Comme ceci:

UPDATE sl_adr a, sl_address b 
SET a.fk_adrID = b.id 
WHERE a.street1 = b.street1 
AND a.postal_code = b.postal_code 
AND a.city = b.city 
AND a.fk_countryID = b.fk_countryID; 
Questions connexes