3

次のテーブルには主キーがありません。次のテーブルから重複行を削除したいと考えています。重複する行を区別する唯一の要因は、atom_id2 です。その重複行を削除するにはどうすればよいですか。あなたの提案をしてください。

atom_id1, atom_id2, atom_ty1, atom_ty2, lennard_jones_acoef, lennard_jones_bcoef 
---------------------------------------------------------------------------------
1,        1,        N3,       N3,       9.44293233E+05,      8.01323529E+02
1,        2,        N3,       H,        2.12601181E+03,      2.09604198E+01
1,        3,        N3,       H,        2.12601181E+03,      2.09604198E+01
1,        4,        N3,       H,        2.12601181E+03,      2.09604198E+01  <-Duplicate Row
1,        5,        N3,       CX,       9.95480466E+05,      7.36907417E+02
1,        6,        N3,       HP,       2.01791425E+04,      6.45756063E+01
1,        7,        N3,       CT,       9.95480466E+05,      7.36907417E+02
1,        8,        N3,       HC,       8.96776989E+04,      1.36131731E+02
1,        9,        N3,       HC,       8.96776989E+04,      1.36131731E+02 <---- Duplicate Row
1,        10,       N3,       C,        8.82619071E+05,      6.53361429E+02
1,        11,       N3,       O2,       6.06829342E+05,      6.77220874E+02
4

4 に答える 4

2

主キーがない場合、適切なレコードを確実に削除するには、追加の条件を指定する必要があります。

WHEREたとえば、次の句を使用してこれを行うことができます。

DELETE FROM your_table WHERE atom_id1 = 1 AND atom_id2 = 4;

注:これは、提供したレコード以外にレコードがないことを前提としています。SELECTこれを最初に実行することを強くお勧めします。

主キーの作成も検討する必要があります。atom_id2有力候補になりそうです。

于 2012-09-21T02:58:56.870 に答える
1
First you get distinct row insert temp.. table then delete current table and import row from temp.. table.

insert into temp_table(column1,column2,..) 
select distinct column1,column2,... from table2

delete from table2

insert into table2(column1,column2,..) 
select column1,column2,... from temp_table
于 2012-09-21T04:21:59.927 に答える
0

既存のテーブルで重複する行を削除するのが難しい場合は、新しいテーブルを作成して、既存のテーブルから個別の値を挿入できます。それがあなたを助けることを願っています

于 2012-09-21T05:45:34.887 に答える
0

主キーを使用するのが最善の方法です。あなたの場合、atom_id2 を含む where 条件で少なくとも 2 つのフィールドを使用して、重複が選択されないようにします。これは、最初に適切なステートメントを作成して確認しSELECT、次にこのステートメントをDELETE自分にとってより簡単なステートメントに変換する必要があります。

于 2012-09-21T03:50:49.503 に答える