MySQL обновление с присоединением - PullRequest
4 голосов
/ 17 ноября 2011

Я знаю, что это просто, но у меня умственный блок.

Мне нужно обновить все продукты, которые относятся к категории.Продукт присваивается категории в таблице сопоставлений.

, поэтому это что-то вроде

UPDATE product P1 
SET myflag = 1 
WHERE P1.productid IN (
    SELECT CA.productid 
    FROM category_associations CA 
    WHERE CA.categoryid = '500'
)

Есть ли лучший способ?

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011

A JOIN обычно имеет оптимальный план выполнения, но IN может быть неэффективным:

UPDATE 
   product P1 JOIN
   category_associations ca 
      ON ca.productId = P1.productId 
      AND ca.categoryId = '500'
SET P1.myflag = 1
0 голосов
/ 17 ноября 2011

другой способ написать это:

UPDATE product
SET myflag = 1
FROM product P1 JOIN
   category_associations ca 
      ON ca.productId = P1.productId 
WHERE ca.categoryId = '500'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...