0

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

  1. 首先,我想检查他们的用户名是否存在。
  2. 如果没有,我想检查他们的名字、姓氏和电子邮件地址。
  3. 最后,如果这与任何人都不匹配,我只想检查名字和姓氏是否存在。

我一直在查看 IF/ELSE 语句,甚至是 Google 中的 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 代码。

4

4 回答 4

1

我最终接受了@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 语句来确定哪条记录是完全重复的。

于 2012-05-22T06:58:10.927 回答
0

这会有什么问题?

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
于 2012-05-22T05:49:02.780 回答
0

不要忘记TOP 1!

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')
)
于 2012-05-22T05:49:09.557 回答
0

看看这个:http ://docs.oracle.com/cd/E17952_01/refman-5.5-en/control-flow-functions.html#operator_case

于 2012-05-22T05:51:00.180 回答