删除以N个字符开头的行SQL Postgres

时间:2019-02-01 14:56:05

标签: sql postgresql

我有2个表SQL:

  • 带有列->的用户:uid,名称,邮件
  • 电话->:ID,品牌,型号,refFirtUser

refFirtUser是构成用户ID的列-和一个随机数 示例:refFirtUser(uid_users-12345687)-> 9145-12345687

我要删除“电话”表中的所有数据。

我必须通过邮件获取用户的“ uid”并在“-”之前搜索N个首字符。

“ refFirtUser”列中以“ uid-xxxxx”开头的所有数据 (其中uid是用户的ID)。 我唯一的数据是电子邮件

我该怎么办?

2 个答案:

答案 0 :(得分:0)

根据您的解释,user.uid-之前还是之后的数字是不明确的。无论哪种情况,您都可以使用exists

delete from phone p 
      where exists ( select 1 from user u where mail in ( 'listofmail') 
 and p.refFirtUser like '%-'||u.id );

OR

delete from phone p 
      where exists ( select 1 from user u where mail in ( 'listofmail') 
 and p.refFirtUser like u.id||'-%' );

答案 1 :(得分:0)

如果您要通过邮件phone'someone@gmail.com'中删除用户:

delete from phone
where 
  refFirtUser like (select uid from user where mail = 'someone@gmail.com') || '-%'