2013-07-26 24 views
8

Próbuję wykonać relacyjną aktualizację przy użyciu sprzężenia innjer i nie można uzyskać poprawnej składni.Rejestracja MySQL Inner Join

Wiersze są następujące:

Catalogue.Category_ID 
Catalogue.Visible 

Categories.Category_ID 
Categories.Category_Name 

Próbuję zaktualizować wartość pola widoczne, gdy kategoria numery identyfikacyjne mecz i odpowiadać na poprawną nazwę.

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

Przepraszam, jeśli chodzi o głupi błąd w składni, nie jestem najbardziej doświadczony w relacyjnych bazach danych.

Odpowiedz

17

Wierzę, że to jest właściwa składnia:

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

Awesome! Nie musiałem walczyć, żeby to wymyślić. Dzięki stary. – racl101

3

Używasz TSQL składni, oto dla MySQL

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

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

jeśli chcesz skrócić zapytanie, należy ALIAS

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

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

Wierzę, że szukasz:

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