2017-05-06 16 views
0

テーブル名radacct radacctidはpkですaccountuniqueidは、接続時に加入者によって生成されたほぼ一意の文字列です。この選択クエリの結果を1つのmysqlコマンドでどのように削除できますか?

これは、このプロセスを自動化するために、同じコマンドを使用して結果を削除したいという重複したエントリを排除するmysqlクエリです。

select * 
from radacct 
group by acctuniqueid 
HAVING 
(radacct.acctuniqueid > 1) 
+0

このクエリで出力されたものを削除しますか? –

+1

あなたが望むものに注意してください。クエリでacctuniqueid = 100と表示されている場合は、acctuniqueid = 100 **の行をすべて削除するか、acctuniqueid = 100 ** –

答えて

0

私はあなたのHAVING句でHAVING COUNT(acctuniqueid) > 1を意味想定しています。あなたが本当にすべての重複を削除したい場合(すなわちdupesのNONEを維持しない):MySQLは、直接サブ選択内の同じテーブルの参照を無視するため

DELETE FROM 
    radacct 
WHERE 
    `acctuniqueid` IN (
     SELECT `acctuniqueid` FROM (
      SELECT `acctuniqueid` 
      FROM radacct 
      GROUP BY `acctuniqueid` 
      HAVING COUNT(`acctuniqueid`) > 1 
     ) x 
    ) 
; 

仲介SELECTが必要です。

削除する前にフルテーブルバックアップを実行することをお勧めします。

+0

を1行だけ残しておきたいですか? – user3104909

関連する問題