WHERE中的MySQL IF/ELSE语句

WHERE中的MySQL IF/ELSE语句,mysql,Mysql,我想在数据库中查找重复的成员 首先我想检查他们的用户名是否存在 如果没有,我想检查他们的名字、姓氏和电子邮件地址 最后,如果这与任何人都不匹配,我只想检查名字和姓氏是否存在 我一直在看IF/ELSE语句,甚至谷歌的CASE,但我似乎不知道在我的情况下它会如何工作 这里有一些代码在我看来是有意义的(作为一名PHP程序员),但这不是MySQL的工作方式 SELECT id FROM members WHERE ( IF (member_username = 'john.doe') E

我想在数据库中查找重复的成员

  • 首先我想检查他们的用户名是否存在
  • 如果没有,我想检查他们的名字、姓氏和电子邮件地址
  • 最后,如果这与任何人都不匹配,我只想检查名字和姓氏是否存在
  • 我一直在看IF/ELSE语句,甚至谷歌的CASE,但我似乎不知道在我的情况下它会如何工作

    这里有一些代码在我看来是有意义的(作为一名PHP程序员),但这不是MySQL的工作方式

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

    如果可能的话,我将如何将上述内容转换为可用的MySQL代码。

    这会有什么问题

    SELECT id
    FROM members
    WHERE (member_username = 'john.doe'
        OR (member_firstname = 'John' AND member_lastname = 'Doe' AND member_email = 'john@doe.com')
        OR (member_firstname = 'John' AND member_lastname = 'Do'))
    AND deleted = 0
    

    别忘了第一名

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

    看看这个:

    我最终接受了@Corbin的建议并使用了

    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语句来确定哪条记录是完全重复的。

    我会使用:
    从username='username'或(first_name='first name'和last_name='last name'的成员处选择username、first_name、last_name、email_addr)
    然后确定这三种情况中的哪一种是在您使用的任何编程语言中发生的(或者您只是想在MySQL中实现吗?)@Corbin我本来希望在MySQL soley中实现的,但您的建议也可以很好地实现。我想我可能会同意你的选择,因为与目前为止我收到的其他答案相比,这似乎是最安全的。我想让它先检查姓名和电子邮件地址是否存在,然后再检查姓名是否存在。