2012-06-20 35 views
4

我有兩個表內的一個MySQL數據庫。MYSQL - 如何選擇CASE(兩個表,如果不在一個,檢查其他)

一個表包含與價值"[email protected]"

其他表不...領域

我想要做的是檢查現場兩個表與匹配"[email protected]"的值。

這裏是我的查詢不工作:

(#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 13) 

SELECT CASE WHEN 
EXISTS (
    SELECT address, suburb, city, postCode, province 
    FROM user_postal 
    INNER JOIN user_info ON user_postal.id = user_info.id 
    WHERE user_info.emailContact = '[email protected]' 
) 
OR EXISTS (
    SELECT address, suburb, city, postCode, province 
    FROM user_postal 
    INNER JOIN user_business_info ON user_postal.id = user_business_info.id 
    WHERE user_business_info.emailContact = '[email protected]' 
) 

我想回與電子郵件[email protected]匹配用戶的ID的字段address, suburb, city, postCode, province的值。 (這可能是在兩個表中的任何一個,但它肯定是在一個或另一個)

任何人都可以啓發我,我哪裏出錯了?任何有關這方面的信息將不勝感激。謝謝!

回答

4

如何:

SELECT address, suburb, city, postCode, province 
FROM user_postal 
INNER JOIN user_info ON user_postal.id = user_info.id 
WHERE user_info.emailContact = '[email protected]' 

UNION 

SELECT address, suburb, city, postCode, province 
FROM user_postal 
INNER JOIN user_business_info ON user_postal.id = user_business_info.id 
WHERE user_business_info.emailContact = '[email protected]' 
+0

完美的工作,謝謝! – normalUser

1

這是您要使用UNION的地方。

+0

謝謝你的投入,你能解釋我爲什麼聯盟會在這種情況下更好?我已經調整了一個查詢,根據是否匹配選擇一個1或0的情況......但在這種情況下,爲什麼是一個工會? –

1
SELECT address, suburb, city, postCode, province 
FROM user_postal 
     INNER JOIN user_business_info ON (user_postal.id = user_business_info.id AND user_info.emailContact = '[email protected]') 
             OR (user_postal.id = user_info.id AND user_business_info.emailContact = '[email protected]') 
相關問題