需要帮助SQL查询 - 外连接解决方​​案?

时间:2011-06-18 23:06:03

标签: sql join outer-join

我有一个电子邮件地址的数据库表。 我想根据一组字符串查询它。

我不仅希望查询结果返回字符串集中包含的那些电子邮件地址 - 这很简单。

相反,我希望找回查询中使用的所有字符串,以及一个布尔字段,告诉我它是否在表中。例如。:    joe@joe.com是的    sam@sam.com是的    jim@jim.com错误

我有解决方案(使用'Not In'查询加入'In'查询) - 但我希望有更好的东西。

(是的,我知道我可以通过简单的查询然后从查询字符串集中删除找到的项目而在没有数据库的情况下解决它)

3 个答案:

答案 0 :(得分:1)

将您要查询的地址放入(临时)表格,然后将电子邮件地址表LEFT JOIN加入其中。

SELECT
  r.email_address,
  CASE WHEN e.email_address IS NULL THEN 'FALSE' ELSE 'TRUE' END AS is_present
FROM requested_emails r
  LEFT JOIN email_addresses e ON r.email_address = e.email_address

答案 1 :(得分:0)

declare @CrappyStr varchar(10)
set @CrappyStr = 'dummy'

select @CrappyStr AS SearchString
, email_address
, CASE WHEN charindex(@CrappyStr, email_address) > 0 THEN 'True'
 ELSE 'False' END AS [BOO-lean]
from SnarkyTable

答案 2 :(得分:0)

请注意,SQL没有布尔类型。我在这里使用字符串。

SELECT email_address, NVL( sq.present, 'FALSE' ) AS present
  FROM mytable t
  LEFT JOIN ( SELECT email_address, 'TRUE' AS present 
                FROM mytable
               WHERE email_address in ( ... your list here ... )
            ) sq ON sq.email_address = t.email_address