回答

收藏

根据多个条件从表中删除重复项并保留到其他表

技术问答 技术问答 257 人阅读 | 0 人回复 | 2023-09-12

我有一个taccounts表列的喜欢account_id(PK),login_name,password,last_login。现在,我必须根据新的业务逻辑删除一些重复的项目。因此,重复的帐户将使用相同的帐户email
9 M- B+ J( D1 V$ ?& H5 a% B    相同(login_name&password)。必须保留具有最新登录名称的。
/ x1 D5 w8 O# L5 |这是我的尝试(有些电子邮件值为null和空白)
5 }% `* p- I) B' H6 JDELETEFROM taccountsWHERE email is not null and char_length(trim(both ' ' from email))>0 and last_login NOT IN(SELECT MAX(last_login)FROM taccountsWHERE email is not null and char_length(trim(both ' ' from email))>0 GROUP BY lower(trim(both ' ' from email)))与login_name和类似password+ y/ v9 P" z5 _- {  K' T
DELETEFROM taccountsWHERE last_login NOT IN(SELECT MAX(last_login)FROM taccountsGROUP BY login_name,password)有没有更好的方法或任何方法来组合这两个单独的查询?
6 S. u* z% P8 O5 b# ?8 W1 h4 `# g& U还有其他一些手表account_id外键。如何更新这些表的更改?    `我正在使用PostgreSQL 9.2.1. B" o  D$ @9 k, H7 ~6 ^0 N
编辑! K  U( I) p  m! C. d- n+ \
:有些电子邮件值为null,其中一些为blank(’‘)。因此,如果两个账户有所不同login_name和密码,电子邮件是空的或空的,必须视为两个不同的帐户。" h" ~4 F% _7 A- g3 @  }- \
                                                               
% s, y9 n6 p$ J1 ?& a8 I    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则