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

重複するエントリをマージしてから削除する

    SQLでこれを効率的に行うことはできないと思います。それを行うための1つの遅い方法は、次のようなものです。

    CREATE TEMPORARY TABLE tmp_table (...);
    INSERT INTO tmp_table SELECT phone, max(rating) FROM table GROUP BY phone;
    TRUNCATE table;
    INSERT INTO table SELECT * FROM tmp_table;
    

    より良い方法は、ストアドプロシージャまたは外部スクリプトです。 phoneの順に表からすべての行を選択します グループ化/マージ/削除を手動で実行します(結果を繰り返し、phoneと比較します) 前の行の値、異なる場合は新しいグループなど)。ただし、MySQLでストアドプロシージャを作成するのは面倒なので、コードを作成するつもりはありません。 :)



    1. 複数の列を変更するMySQLの更新は非アトミックですか?

    2. インデックスの一部ではない外部キーの列に関するAndroidRoomのコンパイル時の警告。どういう意味ですか?

    3. 別のユーザーとしてMySQLにログインする方法は?

    4. ツールボックスから取り出す非推奨の機能–パート3