Sql 选择多列不包含值的位置
我有一个表,表中有3个电子邮件列。有一个默认的电子邮件地址(为了简单起见,我们称之为Sql 选择多列不包含值的位置,sql,select,Sql,Select,我有一个表,表中有3个电子邮件列。有一个默认的电子邮件地址(为了简单起见,我们称之为name@example.com),我们不想显示。如果select语句在第一封电子邮件中遇到此问题,它将使用第二封电子邮件,依此类推。我只需要遇到的第一封电子邮件不是name@example.com。如果这三个地址都是该地址,则不会返回该记录 作为一个快速的测试,我试着 SELECT * FROM participant WHERE primaryEmail <> 'name@example.co
name@example.com
),我们不想显示。如果select语句在第一封电子邮件中遇到此问题,它将使用第二封电子邮件,依此类推。我只需要遇到的第一封电子邮件不是name@example.com
。如果这三个地址都是该地址,则不会返回该记录
作为一个快速的测试,我试着
SELECT *
FROM participant
WHERE primaryEmail <> 'name@example.com'
AND secondaryEmail <> 'name@example.com'
AND ternaryEmail <> 'name@example.com'
选择*
来自参与者
primaryEmail'name@example.com'
第二封电子邮件'name@example.com'
和三年期电子邮件'name@example.com'
这是不好的,因为如果输入的记录缺少电子邮件,则name@example.com已插入
,因此我只接收从不包含该电子邮件的记录
编辑
我需要指定select语句将使用的唯一记录是名称和查询找到的任何电子邮件。您可以在查询中尝试
或,而不是和。这样,您将获得至少一封电子邮件有效的条目 在选择中使用案例
选择第一个非name@example.com'将您的WHERE
更改为使用或
应该可以解决您的问题
SELECT
name,
CASE
WHEN primaryEmail <> 'name@example.com' THEN primaryEmail
WHEN secondaryEmail <> 'name@example.com' THEN secondaryEmail
ELSE ternaryEmail
END AS email
FROM participant
WHERE
primaryEmail <> 'name@example.com'
OR secondaryEmail <> 'name@example.com'
OR ternaryEmail <> 'name@example.com'
选择
名称
案例
当primaryEmail'name@example.com“那么primaryEmail呢
当第二封电子邮件'name@example.com“然后是第二封电子邮件
其他电子邮件
以电子邮件结尾
来自参与者
哪里
primaryEmail'name@example.com'
或第二封电子邮件'name@example.com'
或三封电子邮件'name@example.com'