如何编写匹配特殊字符的查询?如何关联两表获取共有邮箱数据?
提取两表共有的邮箱数据SQL查询方案
优先通过邮箱关联的实现方式
方法1:INNER JOIN 关联查询
直接用邮箱字段做等值关联,INNER JOIN 只会保留两表中邮箱完全匹配的记录,自动排除仅单方存在的数据:
SELECT s.* FROM SUPPLIER_TABLE s INNER JOIN CUSTOMER_TABLE c ON s.email = c.email;
方法2:IN子查询筛选
先从客户表提取所有邮箱,再筛选供应商表中包含这些邮箱的记录:
SELECT * FROM SUPPLIER_TABLE WHERE email IN ( SELECT email FROM CUSTOMER_TABLE );
特殊字符处理说明
如果邮箱包含特殊字符(如@、.、_等),不同数据库的处理方式如下:
- MySQL/MariaDB:等值匹配无需额外转义;若字段名含特殊字符,用反引号``包裹字段名即可。
- PostgreSQL:直接等值匹配即可;字段名特殊时用双引号""包裹。
- SQL Server:等值匹配无需转义;字段名特殊时用方括号[]包裹。
邮箱关联不可行时,用共同ID关联
如果后续找到两表的统一关联ID(如user_id),可替换成以下查询:
SELECT s.* FROM SUPPLIER_TABLE s INNER JOIN CUSTOMER_TABLE c ON s.common_id = c.common_id;
内容的提问来源于stack exchange,提问作者Raaj
相关产品推荐
相关产品推荐

