我在 不同的数据库 中有两个表 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子句中的更新
请帮忙。谢谢。