特定の値のセットからではない値を削除したい。これらの値は事前にはわかりません。これらの値をクエリすることで知ることができ、プロセスを1つのステップで実行したいと思います。私は次のステートメントを実行しました:
delete from db.table1 where domain not in
(
select distinct domainname
from db.table1
where domainname like '%.uci.edu'
group by keyvalue
order by domainname
)
and domainanme like '%.uci.edu';
domainname
が一意のフィールドであり、の主キーtable1
が数値であることを知っていauto_increment
ます。
私がする必要があるのは次のとおりです:私はドメイン名のリストを持っています。言う:aa.yahoo.com、bb.yahoo.com、cc.yahoo.com、aa.msn.com。各ドメイン名にはキー値があります。キーが共有されている場合は、このレコードを削除したいと思います。そこで、キー値でグループ化された個別の値を選択しました。レコードが個別のセットになく、同じトップレベルドメインを持っている場合、私はそれを必要としません。
クエリが間違っている可能性があります。SQLは私にerror: 1093: you can' specify target table table1 for update in FROM clause.
効率的な方法でこの目的を達成するのを手伝ってください。せん断されたトップレベルドメイン名の非常に長いリストがあります。必要なのは、明確なキー値を持つドメイン名だけです。すべてのドメイン名を1つずつ(私の例のように)実行する必要なしにこれを行うユニバーサルソリューションがある場合は、それが優れています。
編集: domainname
一意のフィールドではありません。私は別のフィールドを使用します:domainnameNo
一意のフィールドとして