Home  >  Article  >  Backend Development  >  一个sql相同数据合并问题

一个sql相同数据合并问题

WBOY
WBOYOriginal
2016-06-23 14:08:451155browse

我现在有个A表, 是这样的       大家可以先跳过表 看下一句我想要什么
name        cart
黄鑫         坏人&同学
卢秀秀      同学
刘毅         朋友&同学

我现在要新建B表把A表的cart另存进来    B表像这样
id         cartname
1         同学
2         朋友
3         坏人

也就是数据去重存入到新的表中       请问这该用怎样的代码来完成呢


回复讨论(解决方案)

不明白楼主讲的两个表的关系,也不清楚楼主的意图

建议直接用脚本来处理这个问题,基本上无法用一条SQL解决(实际上也不建议这样)

程序定期执行相关处理逻辑,然后把最新数据插入到B表,至于去重操作,脚本逻辑很好处理就不多说了


insert into test(cartname)select cart from userinfo group by cart;


我弄了半天   就像是上边这样的  不过还有个&符号去重的问题
其实就是把A表里的分类标签字段 去重移入到新的表里

select substring_index(cart,'&',1) from A表
union
select substring_index(substring_index(cart,'&',2),'&',-1) from A表
union
select substring_index(substring_index(cart,'&',3),'&',-1) from A表

套红的重复若干遍

INSERT INTO table_b( cartname ) 
(
SELECT DISTINCT (cart) FROM table_a
)

&符号分割的部分也需要去重的话,用PHP脚本来处理效率可能会高一点

select substring_index(cart,'&',1) from A表
union
select substring_index(substring_index(cart,'&',2),'&',-1) from A表
union
select substring_index(substring_index(cart,'&',3),'&',-1) from A表

套红的重复若干遍

好吧   版主就是版主  用你给的代码已经成功了,   不过我只执行了一次 好像没什么问题了  谢谢你版主

$intosql="insert into 表B(cart)select substring_index(cartname,'&',1) from 表Aunionselect substring_index(substring_index(cartname,'&',2),'&',-1) from 表Aunionselect substring_index(substring_index(cartname,'&',3),'&',-1) from 表A";mysql_query($intosql);

你现在的 cart 中只有一个'&',但以后也可能有多个
union
select substring_index(substring_index(cart,'&', 3),'&',-1) from A表
的个数应多于'&'的个数,这样才不易出错
注意那个 3 是顺号,要逐一递增

你现在的 cart 中只有一个'&',但以后也可能有多个
union
select substring_index(substring_index(cart,'&', 3),'&',-1) from A表
的个数应多于'&'的个数,这样才不易出错
注意那个 3 是顺号,要逐一递增

哦 那就是有几个&符号就加几句
union
select substring_index(substring_index(cartname,'&',[color=#0000FF]3),'&',-1) from 表A[/color]
是吗  然后那个蓝色数字是递增的   那如果是1个&符号的话 就一句select substring_index(cart,'&',1) from A表就可以了吗   那我是直接按你的用到3了 也没问题的吧

没有问题,有问题(取出的项不对)时再加
显然是加的越多效率越低

没有问题,有问题(取出的项不对)时再加
显然是加的越多效率越低

恩  谢谢版主

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn