📜  PostgreSQL – 删除使用

📅  最后修改于: 2022-05-13 01:57:15.159000             🧑  作者: Mango

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;

这应该导致以下结果:



psql 删除使用

现在我们已经设置了示例表,我们将使用以下命令查询重复项:

SELECT
    fruit,
    COUNT( fruit )
FROM
    basket
GROUP BY
    fruit
HAVING
    COUNT( fruit )> 1
ORDER BY
    fruit;

这应该导致以下结果:

psql 删除使用

现在我们知道了重复的行,我们可以使用删除使用语句如下去除重复行

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;

这应该导致以下结果:

psql 删除使用