带有WHERE子句的DELETE语句

时间:2017-07-19 04:54:23

标签: mysql

我在 不同的数据库 中有两个表 Table_A(DB1) Table_A(DB2)(< em> DB1 和 DB2 分别)。在这两个表中, price quantity 可能不同(或可能相同),即使 item_id 存储是一样的。

                **Table_A (DB1)**   

**item_id**  **store**   **price**   **quantity** 
     1           A            1           1
     2           B            2           4
     1           C            1           1
     3           A            1           1
     3           C            2           1
     2           A            2           3
     3           B            2           2



                 **Table_A (DB2)**  

**item_id**  **store**   **price**   **quantity**            
     1           B            1           2
     2           A            2           3

现在我要删除 Table_A(DB1) Table_A(DB2)中不存在 item_id 的所有此类记录(请记住,对于 item_id store 的给定组合,这些表可能具有不同的价格和数量。我打算得到的表格如下所示( Table_A(DB1)-updated ):

                **Table_A (DB1)-updated**   

**item_id**  **store**   **price**   **quantity** 
     3           A            1           1
     3           C            2           1
     3           B            2           2

Table_A(DB2)中缺少 item_id Table_A(DB1)中选择 item_id em>,我使用以下查询:

SELECT DISTINCT item_id FROM DB1.Table_A
WHERE item_id NOT IN (SELECT DISTINCT item_id FROM DB2.Table_A); 

上面的查询给出了Table_A(DB2)中缺少 item_id 的列表(但是存在于Table_A(DB1)中)。

现在,我希望使用我们在上一步中获得的 item_id 删除Table_A(DB1)中的所有记录。我也想一次性做同样的事情。我试图运行以下查询,但它返回一个错误。

DELETE FROM DB1.Table_A WHERE item_id IN 
(SELECT DISTINCT item_id FROM DB1.Table_A
WHERE item_id NOT IN (SELECT DISTINCT item_id FROM DB2.Table_A));

我得到的错误是:

错误代码:1093。您无法指定目标表&#39; Table_A&#39;用于FROM子句中的更新

请帮忙。谢谢。

0 个答案:

没有答案