请考虑下表.
CREATE TABLE my_table
(
cost decimal(10,2),
ref int
);
INSERT INTO my_table(cost, ref)
VALUES (0.00, 1),
(0.50, 1),
(-1.89, 1),
(0.00, 2),
(0.00, 2),
(0.00, 2),
(1.23, 3),
(-9.47, 3),
(111.23, 3),
(12.00, 3);
我使用该表的目的是对其进行筛选,以删除ref = 2
处的所有行(上面的第4、5和6行),因为ref = 2
处的所有成本值都为零.
通过计算ref
的哪些值至少有一行成本不为零,我已经做到了一半:
SELECT DISTINCT ref
INTO refs_to_keep
FROM my_table
WHERE cost != 0.00;
所以我想要做的就是完成这项工作
DELETE FROM my_table
WHERE ref NOT IN "list of refs in the refs_to_keep table";
但我不知道它的语法.有谁能帮帮我吗?
或者,也许有其他方法可以在没有中间refs_to_keep
阶段的情况下实现这一点?