我知道这很简单,但我脑子一片空白。
我需要更新属于某个类别的所有产品。产品是通过关联表分配到一个类别中的。
所以大致上应该是这样的:
UPDATE product P1
SET myflag = 1
WHERE P1.productid IN (
SELECT CA.productid
FROM category_associations CA
WHERE CA.categoryid = '500'
)
有更好的方法吗?
JOIN
通常具有最佳的执行计划,但IN
可能效率较低:
UPDATE
product P1 JOIN
category_associations ca
ON ca.productId = P1.productId
AND ca.categoryId = '500'
SET P1.myflag = 1
另一种写法是:
UPDATE product
SET myflag = 1
FROM product P1 JOIN
category_associations ca
ON ca.productId = P1.productId
WHERE ca.categoryId = '500'