2016-12-02 6 views
1

私はテーブルに同じnumberの行をいくつか持っています。1行を除くSQLからデータを削除する方法は?

1行を除くすべての行を削除するにはどうすればよいですか?私はこの意味

:だから

number 
1 2 
2 2 
3 2 
4 2 

を、私はどこ数= 2すべての行を削除する必要がありますが、例えば、一列のみを残す:1 2

+0

他の列はありません、ただ数のような何かを行うことができますか? – jarlh

+0

いいえ、列があります – MisterPi

+0

このリンクから役立つ情報が得られるかもしれません:http://stackoverflow.com/questions/33626927/can-a-row-be-deleted-by-specifying-rownum-in-oracle -11g –

答えて

2
delete t from t inner join t t2 on t2.number = t.number and t2.id < t.id 
+0

このクエリは、 'id'カラムが与えられた' number'値に対して重複しないことを前提としています。 –

1

まず、何でありますテーブルの本名?それは本当にtという名前ではありませんか?名前はMyTableとしましょう。 第2に、最初の列が主キーですか?その場合、

Delete from MyTable t 
where PK != 
    (Select Min(PK) from MyTable 
    where number = t.number) 

注:(これは明白です)サブクエリを使用した削除に必要なMySQLの構文上の必要条件を修正してください。

+0

エラーコードxxxx:コメントには有用な情報が含まれていません –

+0

これはあなたのコメントを改善して有用にする機会です。コミュニケーションのレッスンをしたいですか? –

+0

不足している 'from'を追加した後、新しいエラーコード' Error Code:1093 'が表示されます。FROM句で更新の対象テーブル' t 'を指定することはできません。私はこれが十分明確であることを望む。 –

0

これは第一行以外のすべての行を削除します

delete from table_name t1 
where pk_col not in (select pk_col from table_name where number = t1.number limit 1) 

昇天 pk_col =主キーCOL

+0

エラーコード:1064.あなたはあなたのSQL構文 –

+0

のエラーは、完全なエラーメッセージ –

0

delete from t where number=.. and pk > (select min(pk) from t)

+0

を貼り付けることができますエラーコード:1093. FROM句の更新のためのターゲットテーブル 't'を指定することはできません –

0

私たちはテーブルTB1中2列があるとします。

ID Name 
1 Akshay 
2 Akshay 
3 Akshay 

これで私はdにしたいこれは2番目の行を除いてeveyの行を削除します

delete from tb1 where ID NOT LIKE 2 

:elete ID 2と1を除くすべての行、

は、だから私はとしてSQL文を書きます。

これが役に立ちます。

1

あなたは

DELETE FROM your_table 
WHERE (number2 = 2) 
    AND (number1 <> 1); 
関連する問題