SQL УДАЛИТЬ / ОБНОВИТЬ с подзапросом - PullRequest
0 голосов
/ 13 апреля 2020

Используя следующий запрос SELECT в качестве подзапроса, я хотел бы обновить свою таблицу, чтобы удалить дубликаты. В частности, я хотел бы удалить записи с ID 2 и 5.

DATA:

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

1 Ответ

1 голос
/ 13 апреля 2020

Ваш образец SQL относится к двум таблицам, поэтому, похоже, он не имеет никакого отношения к вашему актуальному вопросу.

Если бы у вас была одна таблица, логика c (в большинстве баз данных) была бы такой:

delete from data
    where id > (select min(d2.id)
                from data d2
                where replace(replace(d2.email, '@.', '' ), '@', '' ) = replace(replace(data.email, '@.', '' ), '@', '' )
               );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...