【发布时间】:2020-05-11 04:42:21
【问题描述】:
我有以下四个 SQL 表:
Table 1:
-----------------------
Product | Date_Purchase
-----------------------
abc | 06-Jan-19
def | 05-Jan-18
ghi | 05-Apr-19
abc | 06-Feb-19
Table 2:
------------------------
Product | Date_Purchase
------------------------
jkl | 6-Feb-19
mno | 2-Aug-18
ghi | 9-May-19
pqr | 1-Sep-19
Table 3:
-------------------------
Product | Date_Purchase
-------------------------
ghi | 2-Aug-18
mno | 9-May-19
pqr | 2-Aug-18
abc | 06-Jan-19
Table 4:
-------------------------
Product | Date_Purchase
-------------------------
stu | 9-May-19
vwx | 05-Apr-19
ghi | 9-May-19
def | 05-Jan-18
我有以下代码将表格与 Union 连接起来:
SELECT Product, Date_Purchase FROM Table1 UNION ALL
SELECT Product, Date_Purchase FROM Table2 UNION ALL
SELECT Product, Date_Purchase FROM Table3 UNION ALL SELECT Product, Date_Purchase FROM Table4
ORDER BY Product, Date_Purchase;
我想从表格中删除所有在所有表格中只出现一次的行,无论是哪个表格。
例如 jkl、stu 和 vwx 只出现一次,所以我想从它们出现的表中删除整行。有谁知道该怎么做? 另外,如何删除表格中出现且购买日期相同的所有产品?
【问题讨论】:
-
这能回答你的问题吗? How to Delete Records NOT IN
-
您使用的是什么 DBMS(Oracle、MySQL 等)?我怀疑您是否能够在一次操作中从所有四个表中删除。您可能需要将所有要删除的项目填充到临时表中,然后执行四次删除(每个源表一次)以删除在临时表中找到的所有项目。
-
您的问题解决了吗?那么请告诉我们。
-
forpas 提供的解决方案奏效了!谢谢大家