怎样把MySQL数据表分拆_mysql将一个表拆分成多个表(一)(转载)

直接根据数据量进行拆分

有一个5000条数据的表,要把它变成没1000条数据一个表的5等份。

假设:表名:xuesi 主键:kid

xuesi共有5000条数据,kid从1到5000自动增长

题目:将xuesi分成5个表 每个表1000条不同的数据

方法1:

create table xuesi1 select * from xuesi order by kid limit 0,1000;

create table xuesi2 select * from xuesi order by kid limit 1000,1000;

create table xuesi3 select * from xuesi order by kid limit 2000,1000;

create table xuesi4 select * from xuesi order by kid limit 3000,1000;

create table xuesi4 select * from xuesi order by kid limit 4000,1000;

以上方法 是根据大表xuesi的主键kid 创建了xuesi1,xuesi2,xuesi3,xuesi4,xuesi5 五等份的小表

不足:primary key 属性丢失

方法2:

create table xuesi1 like xuesi;

insert into xuesi1 select * from xuesi order by limit 0,1000;

create table xuesi2 like xuesi;

insert into xuesi2 select * from xuesi order by limit 1000,1000;

create table xuesi2 like xuesi;

insert into xuesi3 select * from xuesi order by limit 2000,1000;

create table xuesi3 like xuesi;

insert into xuesi4 select * from xuesi order by limit 3000,1000;

create table xuesi5 like xuesi;

insert into xuesi5 select * from xuesi order by limit 4000,1000;

您好!针对您的问题,可以使用 MySQL 中的内置函数 `FIND_IN_SET` 来实现按照逗号进行拆分并遍历中的 `varchar` 类型的数据,具体的实现方式如下: 假设您有一张名为 `table1` 的,其中包含一列名为 `column1` 的字段,该字段的值为一个 `varchar` 类型的字符串,其中包含多个逗号分隔的值,您需要将该字符串拆分后进行遍历,可以使用如下的 SQL 语句实现: ```sql -- 查询符合条件的数据 SELECT * FROM table1 WHERE FIND_IN_SET('value', column1) > 0; ``` 在上面的 SQL 语句中,我们使用 `FIND_IN_SET` 函数来查找 `column1` 字段中包含值为 `value` 的子字符串,如果找到则返回其在逗号分隔的字符串中的位置,否则返回 0。通过将其与 0 进行比较,即可得到该字符串中是否包含该值。 如果您需要遍历 `column1` 字段中所有的逗号分隔的值,可以使用 `SUBSTRING_INDEX` 函数将字符串拆分多个子字符串,并使用 `UNION` 操作将其合并为一个结果集,具体的实现方式如下: ```sql -- 查询拆分后的数据 SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(column1, ',', n), ',', -1) AS value FROM table1 INNER JOIN ( SELECT 1 AS n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 -- 可以根据需要增加更多的数字 ) numbers ON CHAR_LENGTH(column1) - CHAR_LENGTH(REPLACE(column1, ',', '')) >= n - 1; ``` 在上面的 SQL 语句中,我们使用 `SUBSTRING_INDEX` 函数将 `column1` 字段中的字符串拆分多个子字符串,然后使用 `UNION` 操作将其合并为一个结果集。通过使用一个包含多个数字的子查询,可以将字符串拆分相应的子字符串,并将其作为多条记录返回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值