Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择多列不包含值的位置_Sql_Select - Fatal编程技术网

Sql 选择多列不包含值的位置

Sql 选择多列不包含值的位置,sql,select,Sql,Select,我有一个表,表中有3个电子邮件列。有一个默认的电子邮件地址(为了简单起见,我们称之为name@example.com),我们不想显示。如果select语句在第一封电子邮件中遇到此问题,它将使用第二封电子邮件,依此类推。我只需要遇到的第一封电子邮件不是name@example.com。如果这三个地址都是该地址,则不会返回该记录 作为一个快速的测试,我试着 SELECT * FROM participant WHERE primaryEmail <> 'name@example.co

我有一个表,表中有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'
选择*
来自参与者
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'