一个sql相同数据合并问题

php中文网
发布: 2016-06-23 14:08:45
原创
1368人浏览过

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

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

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

网龙b2b仿阿里巴巴电子商务平台
网龙b2b仿阿里巴巴电子商务平台

本系统经过多次升级改造,系统内核经过多次优化组合,已经具备相对比较方便快捷的个性化定制的特性,用户部署完毕以后,按照自己的运营要求,可实现快速定制会费管理,支持在线缴费和退费功能财富中心,管理会员的诚信度数据单客户多用户登录管理全部信息支持审批和排名不同的会员级别有不同的信息发布权限企业站单独生成,企业自主决定更新企业站信息留言、询价、报价统一管理,分系统查看分类信息参数化管理,支持多样分类信息,

网龙b2b仿阿里巴巴电子商务平台 0
查看详情 网龙b2b仿阿里巴巴电子商务平台

回复讨论(解决方案)

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

建议直接用脚本来处理这个问题,基本上无法用一条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了 也没问题的吧

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

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

恩  谢谢版主

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号