mysql如何去除重复的关系对

limits999 2014-01-03 07:57:34
例:
表: tb 里面 有3个字段
name1 name2 type
小明 小王 A
小明 小李 A
小王 小明 A
小明 小王 B
小张 小刘 B
小张 小李 B
上面可以看出:第一行和第三行,既“小明 小王 A” 和“小王 小明 A” 是重复的,也就是说name1 和name2字段等同,mysql里如何有效地去除这样的重复,只保留其中一行就可以了?


原始表格为:
name1 name2 type
小明 小王 A
小明 小李 A
小王 小明 A
小明 小王 B
小张 小刘 B
小张 小李 B

要求转化为:
name1 name2 type
小明 小王 A
小明 小李 A
小明 小王 B
小张 小刘 B
小张 小李 B

或者
name1 name2 type
小明 小李 A
小王 小明 A
小明 小王 B
小张 小刘 B
小张 小李 B
以上两种转化都可以。
...全文
187 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
limits999 2014-01-20
  • 打赏
  • 举报
回复
引用 1 楼 rucypli 的回复:
加一列自增主键 alter table tb add int not null auto_increment primary key; select * from tb A where not exists(select 1 from tb A.type=type and A.name1=name1 and A.name2=name2 and A.id>id);
虽然实现了,但最近一直还是没理解,特意上来再请教一下。这里的A是一个临时表吧?一直没查到这样的临时表产生方式,斑竹能否解一下惑?
limits999 2014-01-04
  • 打赏
  • 举报
回复
引用 2 楼 ACMAIN_CHM 的回复:
select name1,name2,type from 始表格 group by name1,name2
这个实现不了啊,不是所需要的那个目的,谢谢斑竹
limits999 2014-01-04
  • 打赏
  • 举报
回复
谢谢斑竹支持~ 我修改后可用的完整代码是: alter table tb ADD ID INT UNSIGNED not null auto_increment,ADD primary key(ID); select * from tb A where not exists(select 1 from tb WHERE A.type=type and A.name1=name2 and A.name2=name1 and A.ID>ID); 目前还在理解消化中
引用 1 楼 rucypli 的回复:
加一列自增主键 alter table tb add int not null auto_increment primary key; select * from tb A where not exists(select 1 from tb A.type=type and A.name1=name1 and A.name2=name2 and A.id>id);
ACMAIN_CHM 2014-01-03
  • 打赏
  • 举报
回复
select name1,name2,type from 始表格 group by name1,name2
rucypli 2014-01-03
  • 打赏
  • 举报
回复
加一列自增主键 alter table tb add int not null auto_increment primary key; select * from tb A where not exists(select 1 from tb A.type=type and A.name1=name1 and A.name2=name2 and A.id>id);

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧