php两个sql合并,一个sql相同数据合并问题

博主分享如何使用PHP脚本从A表中去除cart列的'&'符号并去重,将数据迁移到新表B,确保数据一致性。通过union操作处理不同层级的分类标签,适用于多层级分类情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我现在有个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了 也没问题的吧

没有问题,有问题(取出的项不对)时再加

显然是加的越多效率越低

没有问题,有问题(取出的项不对)时再加

显然是加的越多效率越低

恩 谢谢版主

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值