PostgreSQL – 删除使用
PostgreSQL 有多种删除重复行的技术。其中之一是使用 DELETE USING 语句。
Syntax: DELETE FROM table_name row1 USING table_name row2 WHERE condition;
出于演示的目的,让我们设置一个存储水果的示例表(例如,篮子),如下所示:
CREATE TABLE basket(
id SERIAL PRIMARY KEY,
fruit VARCHAR(50) NOT NULL
);
现在让我们向新创建的篮子表添加一些数据。
INSERT INTO basket(fruit) values('apple');
INSERT INTO basket(fruit) values('apple');
INSERT INTO basket(fruit) values('orange');
INSERT INTO basket(fruit) values('orange');
INSERT INTO basket(fruit) values('orange');
INSERT INTO basket(fruit) values('banana');
现在让我们使用以下语句验证篮子表:
SELECT * FROM basket;
这应该导致以下结果:
现在我们已经设置了示例表,我们将使用以下命令查询重复项:
SELECT
fruit,
COUNT( fruit )
FROM
basket
GROUP BY
fruit
HAVING
COUNT( fruit )> 1
ORDER BY
fruit;
这应该导致以下结果:
现在我们知道了重复的行,我们可以使用删除使用语句如下去除重复行:
DELETE FROM
basket a
USING basket b
WHERE
a.id < b.id
AND a.fruit = b.fruit;
这应该从表篮中删除所有重复项,并使用以下查询进行验证:
SELECT
fruit,
COUNT( fruit )
FROM
basket
GROUP BY
fruit
HAVING
COUNT( fruit )> 1
ORDER BY
fruit;
这应该导致以下结果: