【问题标题】:SQL DELETE / UPDATE with subquery带有子查询的 SQL DELETE / UPDATE
【发布时间】:2020-04-13 10:53:17
【问题描述】:

使用以下 SELECT 查询作为子查询,我想更新我的表,以便删除重复项。具体来说,我想删除 ID 为 2 和 5 的记录。

数据:

id  | email
-------------------------
1   | @.example.com
2   | @example.com
3   | @test.com
4   | @.example.net
5   | @example.net
SELECT COUNT( M.id ),
    REPLACE( REPLACE( M.email, '@.', '' ), '@', '' ) AS addr
FROM wblist WB
    LEFT JOIN mailaddr M ON M.id = WB.sid
    WHERE WB.wb = 'B' AND M.email LIKE '@%'
GROUP BY addr HAVING COUNT( M.id ) > 1;
 count |          addr
-------+-------------------------
     2 | example.com
     2 | example.net

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。您还显示一张表中的值,但您的问题是指两张表。

标签: sql postgresql


【解决方案1】:

您的示例 SQL 引用了两个表,因此它似乎与您的实际问题无关。

如果你有一张表,逻辑(在大多数数据库中)会是这样的:

delete from data
    where id > (select min(d2.id)
                from data d2
                where replace(replace(d2.email, '@.', '' ), '@', '' ) = replace(replace(data.email, '@.', '' ), '@', '' )
               );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多