2015-11-06 40 views
0

我有一個表有3個電子郵件列。有一個我們不想顯示的默認電子郵件地址(爲了簡單起見,我們將其稱爲[email protected])。如果select語句作爲第一封電子郵件遇到此問題,它將使用第二封電子郵件,依此類推。我只需要遇到的第一封郵件不是[email protected]。如果所有三個都是該地址,則不會返回該記錄。選擇多個列不包含值的位置

作爲一個快速測試我試圖

SELECT * 
FROM participant 
WHERE primaryEmail <> '[email protected]' 
    AND secondaryEmail <> '[email protected]' 
    AND ternaryEmail <> '[email protected]' 

這是不好的,因爲如果記錄中輸入失蹤超過[email protected]插入電子郵件,所以我只收到從未包含電子郵件記錄。

編輯

我需要指定的唯一記錄select語句將使用的名稱和任何電子郵件查詢發現。

回答

1

使用您的SELECT一個CASE選擇第一個非「[email protected]」和改變你的WHERE使用OR應該解決您的問題。

SELECT 
    name, 
    CASE 
     WHEN primaryEmail <> '[email protected]' THEN primaryEmail 
     WHEN secondaryEmail <> '[email protected]' THEN secondaryEmail 
     ELSE ternaryEmail 
    END AS email 
FROM participant 
WHERE 
    primaryEmail <> '[email protected]' 
    OR secondaryEmail <> '[email protected]' 
    OR ternaryEmail <> '[email protected]' 
+0

謝謝,像一個魅力工作。 –

1

您可以在您的查詢中嘗試OR而不是AND。這樣你就可以獲得至少有一封電子郵件有效的條目。

相關問題