0

データベースで重複するメンバーを探したい。

  1. まず、ユーザー名が存在するかどうかを確認します。
  2. そうでない場合は、名前、姓、メールアドレスを確認したい.
  3. 最後に、それが誰とも一致しない場合は、名前と姓が存在するかどうかを確認したいと思います。

Google で 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 コードに変換するにはどうすればよいでしょうか。

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

TOP1もお忘れなく

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 に答える