我有一张表有3个电子邮件列。我们不想显示默认的电子邮件地址(为简单起见,我们称之为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'
这并不好,因为如果输入的记录缺少的电子邮件比插入的name@example.com
少,那么我仅会接收从不包含该电子邮件的记录。
修改
我需要指定select语句将使用的唯一记录是name和查询找到的任何电子邮件。
答案 0 :(得分:1)
您可以在查询中尝试OR
而不是AND
。这样,您就可以获得至少有一封电子邮件有效的条目。
答案 1 :(得分:1)
使用CASE
中的SELECT
选择第一个非'name@example.com'并将WHERE
更改为使用OR
可以解决您的问题。< / p>
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'