2012-05-22 71 views
0

我想查找數據庫中的重複成員。WHERE中的MySQL IF/ELSE語句

  1. 首先,我想檢查他們的用戶名是否存在。
  2. 如果不是,我想檢查他們的名字,姓氏和電子郵件地址。
  3. 最後,如果這不匹配任何人,我想檢查是否存在名字和姓氏。

我一直在尋找IF/ELSE語句,甚至在谷歌案例,但我似乎無法弄清楚它是如何工作在我的情況。

下面是一些代碼,在我的腦海裏是有道理的(是一個PHP程序員),但它是MySQL的不是如何做的事情......

SELECT id FROM members WHERE (
    IF (member_username = 'john.doe') 
    ELSEIF (member_firstname = 'John' AND member_lastname = 'Doe' AND member_email = '[email protected]') 
    ELSE (member_firstname = 'John' AND member_lastname = 'Doe') 
) AND deleted = 0 

我將如何轉換到上述工作MySQL的代碼,如果它是甚至可能。

+1

我將使用:'SELECT用戶名,名字,姓氏,email_addr從成員WHERE用戶名='用戶名'OR(first_name ='名字'AND last_name ='姓氏')'然後確定發生在哪三種情況不管你使用的是什麼編程語言(或者你試圖單獨在MySQL中做什麼?) – Corbin

+0

@Corbin我希望能夠在MySQL中做到這一點,但是你所建議的方法也能很好地工作。我想我可以選擇你的選擇,因爲它與我迄今收到的其他答案相比似乎是最安全的。 –

回答

1

我最終採取@科爾賓的意見,並使用

SELECT username, first_name, last_name, email_addr FROM members WHERE username = 'username' OR (first_name = 'first name' AND last_name = 'last name') 

然後使用PHP if/else語句,以確定哪些記錄是準確的重複。

0

這有什麼問題?

SELECT id 
FROM members 
WHERE (member_username = 'john.doe' 
    OR (member_firstname = 'John' AND member_lastname = 'Doe' AND member_email = '[email protected]') 
    OR (member_firstname = 'John' AND member_lastname = 'Do')) 
AND deleted = 0 
+0

我想在檢查名稱是否存在之前檢查名稱和電子郵件地址是否存在。 –

0

別忘了TOP 1!

SELECT TOP 1 id FROM members WHERE deleted = 0 AND 
(
    (member_username = 'john.doe') OR 
    (member_email = '[email protected]' AND member_firstname = 'John' AND member_lastname = 'Doe') OR 
    (member_firstname = 'John' AND member_lastname = 'Doe') 
)