我有2个表,每个表都有一列。表1的第1列包含电子邮件地址(Emails),表2的第2列包含包含电子邮件地址中的域(domains)。此列2还包含电子邮件应该删除。 我想从第1列中删除包含第2列中的域名和电子邮件地址的电子邮件地址。 这两个表是从文本文件导入到mssql上的db表中的 谢谢
答案 0 :(得分:0)
delete
t1
from table1 as t1
where
exists(select 1 from table2 as t2.column2 = right(t1.column1, len(t1.column1) - Charindex('@', t1.column1)) )
这是一个非常丑陋的查询,对于大表来说应该很慢。我建议您在表1中添加一个固定的计算列,该列将使用丑陋的表达式包含此计算域:
ALTER TABLE table1 ADD computedDomain as right(t1.column1, len(t1.column1) - Charindex('@', t1.column1)) persisted;
然后,您可以根据需要在计算列上添加索引