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

if you find difficulty in deleting duplicate rows in the existing table,you can create new table and insert the distinct values from the existing table. i hope it will help u

于 2012-09-21T05:45:34.887 回答
0

使用主键是最好的方法。在您的情况下,在 where 条件中使用至少两个字段,包括 atom_id2,这样就不会选择重复项。您必须首先通过创建适当的SELECT声明来确认这一点,然后将此声明转换DELETE为对您来说更容易的声明。

于 2012-09-21T03:50:49.503 回答