2016-08-15 5 views
0

primary keyと1つはtimestamp(たとえばC)の2列(たとえばAB)のテーブルがあります。最後のXXXエントリ以外のすべてを削除したいと思います(タイムスタンプでソートされている場合)。誰かが構文で私を助けることができますか?テーブルの構文からの削除

A、B NOT IN(表ORDER BY C DESCのLIMITのXXX FROM A、Bを選択)

が正しいSQLですテーブルからDELETE:私はそれはのラインに沿っている必要がありますね?

編集:どういうわけか、この質問は重複しています。ただし、引用された質問は、ちょうど1つの主キー(またはインデックス)を持つテーブルに適用される回答しかありません。これを2つあるテーブルにどのように展開しますか?

+0

投稿した疑似コードを試しましたか? – Blobonat

+0

一般的に、削除を実行するときは、select文を使用してwhere句を取得して動作させる必要があり、 'select * from'部分を' delete from 'に置き換えてください。 – gabe3886

+0

わかりません。 LIMIT 10は 'NOT IN'に含まれています。なぜそれらを削除するのですか? – Lieuwe

答えて

0

あなたは、削除するための条件を定義する選択内部でこの

DELETE FROM TABLE T1 INNER JOIN (SELECT A, B FROM TABLE ORDER BY C DESC LIMIT XXXX) AS T2 ON T1.A = T2.A AND T1.B = T2.B 

を試すことができます。

+0

しかし、それはXXXXXエントリを削除しますか?私はそれらのXXXXXエントリを除くすべてを削除したい。 – Lieuwe

+0

かもしれません テーブルT1からの削除は、T1.A = T2.AとT1.B = T2.BのAS T2上でのJOIN(SELECT A、BからDESC LIMIT XXXXでのSELECT)を削除します。 T2.Bがヌルです 今あなたは行が参加していない場所を削除しています –

関連する問題