2011-12-15 8 views
2

数時間前にこれをやっただけですが、今では "feat"を繰り返すことができません。別のテーブルからテーブルを更新できません

これは私がやろうとしているものです:

これを実行する
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 

私はエラーを取得:グーグル、ここで見た後

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

を、私はまだある何かを見つけることができません違う。

私は、aに赤で下線が引かれていることがわかります。しかし、なぜそれを理解していない。

+0

通常、更新しているテーブルのエイリアスはありません。エイリアシングは 'FROM'セクションにありますか?または待ってください...多分私はあまりにも眠くなります – Nonym

+0

私は今、ほぼ20時間働いています....私の頭はここにはありません - しかし、はい、別の検索によると、私はエイリアスを使用することができます。 – Steven

+0

あなたは別のエイリアスを使ってみましたか? – Robert

答えて

3

あなたのクエリはほぼOKですが、TABLEキーワードのみが冗長です。

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 

も、これは可能である -

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

ああ....(愚かな感じ)。これは私が朝の04:00まで働くために得るものです:) – Steven

0

エイリアシングは、更新文で絶対に大丈夫です。私はここでの問題は、UPDATE TABLEをちょうどUPDATEと置き換える必要があることだと思います。このように:

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; 
関連する問題