首页 > 解决方案 > 从另一个表中的任何行中选择包含数据的行

问题描述

我正在尝试返回包含另一个表中的任何值的所有电子邮件地址。

SELECT EMAIL
FROM 
  DBO.EMAIL_ADDRESSES AS A,
  DBO.EMAIL_VALUE_LOOKUP AS B
WHERE 
  POSITION(B.EMAIL_VALUE IN A.EMAIL) <> 0

标签: sql

解决方案


让我们向前推进大约 30 年:

SELECT e.email
FROM 
  dob.email_addresses e
  INNER JOIN dbo.email_value_lookup l ON e.email LIKE '%' + l.email_value + '%'

您可能也想使用 DISTINCT,就好像电子邮件匹配多个不同的值一样,它们将被重复。这可以通过使用协调的 Exists 查询来隐式完成:

SELECT e.email
FROM 
  dob.email_addresses e
WHERE EXISTS(
  SELECT null FROM dbo.email_value_lookup l WHERE e.email LIKE '%' + l.email_value + '%')

推荐阅读