2013-07-26 19 views
8

innjer結合を使用してリレーショナル更新を実行しようとしており、正しい構文が得られないようです。次のようにMySQL内部結合更新

行は以下のとおりです。

Catalogue.Category_ID 
Catalogue.Visible 

Categories.Category_ID 
Categories.Category_Name 

私は時にカテゴリID番号が一致見えるフィールドの値を更新し、正しい名前を対応しようとしています。

愚かな構文ミスに陥ると、私はリレーショナルデータベースで最も経験が豊富です。

答えて

17

私は、これは適切な構文であると信じて:あなたは、クエリを短くしたい場合は、使用ここMySQL

UPDATE `Catalogue` 
     INNER JOIN `Categories` 
      ON Catalogue.Category_ID = Categories.Category_ID 

SET `Visible` = '0' 
WHERE Categories.Category_Name = 'Bases' 

のためだ、

UPDATE `Catalogue` 
INNER JOIN `Categories` 
    ON Catalogue.Category_ID = Categories.Category_ID 
    AND Categories.Category_Name = 'Bases' 
SET `Visible` = '0' 
+0

恐ろしい!それを理解するために苦労する必要はありませんでした。ありがとう。 – racl101

3

あなたはTSQL構文を使用しているALIAS

UPDATE Catalogue a 
     INNER JOIN Categories b 
      ON a.Category_ID = b.Category_ID 

SET Visible = '0' 
WHERE b.Category_Name = 'Bases' 
1

私はあなたが探していると信じています:

UPDATE 'Catalogue' SET 'Visible' = '0' FROM 'Catalogue' INNER JOIN 'Categories' ON Catalogue.Category_ID = Categories.Category_ID 
WHERE Categories.Category_NAME = 'Bases'