我是SQL的新手,并试图学习它。我有一个表,如(name_1,name_2,room) 在我的表中有很多重复我想要消除 (name_1,name_2,room)& (name_2,name_1,room)对我而言是重复
我有类似的东西
John Robert C21 Mary Joe C22 Joe Mary C22
我怎样才能把它变成
John Robert C21 Mary Joe C22
答案 0 :(得分:1)
我需要插入一个序列号,一个唯一标识符(id)才能使其正常工作,并修改了查询:
DELETE FROM tabl
WHERE id = (
SELECT t1.id FROM tabl t1, tabl t2 WHERE t1.name_1 = t2.name_2
AND t1.name_2 = t2.name_1
AND t1.room = t2.room
AND t1.name_1 > t2.name_1);
自己定义,如何订购列。我将来只是按字母顺序命名(1,2)。
因此,在删除重复项后,我会更新name_2<的所有行。 name_1以防止将来重复。
也许不同的表结构会更合适?总有两个名字吗?
如果您只有tbl:=(姓名,房间),您可以
John C21
Robert C21
Mary C22
Joe C22
问题不会发生。