Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用join更新mysql_Mysql_Sql - Fatal编程技术网

使用join更新mysql

使用join更新mysql,mysql,sql,Mysql,Sql,我知道这很简单,但我有心理障碍 我需要更新属于某个类别的所有产品。产品被分配到关联表中的类别 所以有点像 UPDATE product P1 SET myflag = 1 WHERE P1.productid IN ( SELECT CA.productid FROM category_associations CA WHERE CA.categoryid = '500' ) 有更好的方法吗?aJOIN通常会有最佳的执行计划,但是中的可能效率低下: UPDATE

我知道这很简单,但我有心理障碍

我需要更新属于某个类别的所有产品。产品被分配到关联表中的类别

所以有点像

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

有更好的方法吗?

a
JOIN
通常会有最佳的执行计划,但是
中的
可能效率低下:

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'

谢谢,这就是我想要的,更新中的连接语法暗示了我。