Sql 如何从我的表中消除反向数据

Sql 如何从我的表中消除反向数据,sql,Sql,我是SQL的新手,正在努力学习它。我有一张桌子,比如(名字1,名字2,房间) 我的桌子上有很多重复的东西,我正试图消除它们 (name_1,name_2,room)和(name_2,name_1,room)对我来说是重复的 我有类似的东西 John Robert C21 Mary Joe C22 Joe Mary C22 约翰·罗伯特C21 玛丽·乔C22 乔·玛丽C22 我怎样才能把它转过来 Joh

我是SQL的新手,正在努力学习它。我有一张桌子,比如(名字1,名字2,房间) 我的桌子上有很多重复的东西,我正试图消除它们 (name_1,name_2,room)和(name_2,name_1,room)对我来说是重复的

我有类似的东西

John Robert C21 Mary Joe C22 Joe Mary C22 约翰·罗伯特C21 玛丽·乔C22 乔·玛丽C22 我怎样才能把它转过来

John Robert C21 Mary Joe C22 约翰·罗伯特C21 玛丽·乔C22
我需要插入一个序列号,一个唯一标识符(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 也许一个不同的表结构更合适?总是有两个名字吗

如果您只有tbl:=(姓名、房间),您可以

John   C21
Robert C21
Mary   C22
Joe    C22

问题不会发生。

您使用的是什么数据库?版本呢?谢谢你的时间标记,我也做了同样的事情,但是从PublicationListNodeUp t1,PublicationListNodeUp中不断得到错误t2@user996554-您需要告诉我们您使用的是什么RDBMS。@user996554:a)我不是马克。b) 我猜“解决方案”不起作用,我们需要为每一行创建一个唯一的索引——至少这会让事情变得更简单。