将WHERE更新到其他表

时间:2018-05-06 15:05:19

标签: sql sqlite

我正在尝试弄清楚当另一个表中的限定符适用时如何更新表中的行。例如,“SET x to y WHERE A.z = B.z AND B.x ='foo'”。

根据我发现的教程,我在W3 Schools' Tryit Editor上执行了以下操作:

UPDATE Products 
SET ProductName = Unit 
WHERE EXISTS (SELECT * 
              FROM Products 
              JOIN Categories ON Products.CategoryID = Categories.CategoryID
              WHERE Categories.CategoryName = 'Beverages')

SELECT语句本身显示正确的(12)条目,但UPDATE语句整体更改所有(77)行。我做错了什么,可以修复吗?

1 个答案:

答案 0 :(得分:1)

我认为你想要一个相关的子查询:

UPDATE Products
    SET ProductName = Unit
    WHERE EXISTS (SELECT 1
                  FROM Categories 
                  WHERE Products.CategoryID = Categories.CategoryID AND
                        Categories.CategoryName = 'Beverages'
                 );