sql >> データベース >  >> RDS >> Mysql

MySQL:複数のフィールド間で重複を見つける

    それは実行可能ですが、アプリケーションレベルで実行するよりも効率的かどうかはわかりません:

    あなたのテーブル:

    mysql> select * from test;
    +----+--------+--------+--------+
    | id | field1 | field2 | field3 |
    +----+--------+--------+--------+
    |  1 | A      | B      | C      |
    |  2 | D      | E      | F      |
    |  3 | A      | H      | I      |
    |  4 | J      | K      | A      |
    |  5 | M      | D      | O      |
    +----+--------+--------+--------+
    5 rows in set (0.00 sec)
    

    重複を見つけるための選択:

    mysql> select count(value) as dupe_count,value from (select field1 as value from test union all select field2 from test union all select field3 from test) as tbl group by value having count(value) > 1 order by 1 desc;
    +------------+-------+
    | dupe_count | value |
    +------------+-------+
    |          3 | A     |
    |          2 | D     |
    +------------+-------+
    2 rows in set (0.00 sec)
    

    基本的に、3つの列を1つに結合してから、重複を探します




    1. SQLAlchemyを使用して2つのデータベースのテーブルを結合する

    2. 20のヒント:ブラックフライデーとサイバーマンデーのためにデータベースを準備する

    3. 主キーもインデックスですか?

    4. パスワードプロンプトなしでUbuntuにMySQLをインストールする