我正在将客户收集到具有特定产品的临时表中,因为此示例将被称为“Foobar”。
CREATE TABLE TEMP_CUSTOMERS AS
SELECT ROW_ID, CUSTOMER_ID
FROM PRODUCT prod
WHERE prod.NAME = 'Foobar'
有些客户可能有多个Foobar,因此表格中的CUSTOMER_ID数量大于1
我的问题是,如何删除表格中包含多条记录的所有客户?
我试过这个
DELETE FROM TEMP_CUSTOMERS
WHERE COUNT(CUSTOMER_ID) > 1
这不起作用。
答案 0 :(得分:2)
由于您要删除这些客户的所有行,您可以使用子查询执行相关删除,该子查询标识具有多行的那些:
DELETE FROM TEMP_CUSTOMERS
WHERE CUSTOMER_ID IN (
SELECT CUSTOMER_ID
FROM TEMP_CUSTOMERS
GROUP BY CUSTOMER_ID
HAVING COUNT(*) > 1
);
首先不插入这些重复项仍然可能更简单,更有效。您可以在内联视图中将分析计数作为CTAS的一部分进行分析;并丢弃任何计数大于1的客户。但这相当偏离主题。