有个表t
ID xkm fuhao tape
1 xk1 a 1s
2 xk2 b 2s
3 xk3 a 1s
4 xk4 b 1s
怎么通过fuhao中的相同字段生成多张表,如上面fuhao字段有两个相同的内容:a、b,则生成两张表
表1:
ID xkm fuhao tape
1 xk1 a 1s
2 xk3 a 1s
表2:
ID xkm fuhao tape
1 xk2 b 2s
2 xk4 b 1s
如果fuhao中有3个则拆分成3个新表,请大家帮忙,我是个新手,在做一个网站,连接mysql数据库,很多不懂,求助
ID xkm fuhao tape
1 xk1 a 1s
2 xk2 b 2s
3 xk3 a 1s
4 xk4 b 1s
怎么通过fuhao中的相同字段生成多张表,如上面fuhao字段有两个相同的内容:a、b,则生成两张表
表1:
ID xkm fuhao tape
1 xk1 a 1s
2 xk3 a 1s
表2:
ID xkm fuhao tape
1 xk2 b 2s
2 xk4 b 1s
如果fuhao中有3个则拆分成3个新表,请大家帮忙,我是个新手,在做一个网站,连接mysql数据库,很多不懂,求助
解决方案 »
- 求教mysql root@local 为何无法授权
- 补料
- mysql数据库导数据很慢为什么?
- 有没有mysql新手的入门的入门好网站
- from a where b_id in (select id from b)。。。这样的SQL在MYSQL如何实现
- MySql ErrnoNr.: 1064
- 谁知道"msqld已死,subsys被锁"该如何是好 ?
- Solaris下装完mysql,为何连接不上?
- mysql 创建表出错
- ERROR 1146 (42S02): Table 'mysql.host' doesn't exist!!!请问是什么情况?
- update t set msg=replace(msg,'%','') 不起作用
- Mysql字段建允许空值,好么? 会不会降低速度?影响效率啊
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE zfuhao CHAR(10);
DECLARE i INT DEFAULT 1;
DECLARE cur1 CURSOR FOR SELECT DISTINCT fuhao FROM tts;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur1;
FETCH cur1 INTO zfuhao;
WHILE done=0 DO
SET @sqlstmt=CONCAT('create table b',i,' SELECT * from tts where fuhao=\'',zfuhao,'\'');
SELECT @sqlstmt;
PREPARE stmt1 FROM @sqlstmt;
EXECUTE stmt1 ;
DEALLOCATE PREPARE stmt1;
SET i=i+1;
FETCH cur1 INTO zfuhao;
END WHILE;
END$$DELIMITER ;
步骤2: 复制结果到EXCEL,A列
步骤3:EXCEL B1输入公式 ="create table t_"&A1&" as select * from 表t where fuhao='"&A1&"';"
步骤4:B列公式向下填充
步骤5;B列的内容SQL语句贴入MYSQL执行。
INSERT INTO t1(ID, xkm, fuhao, tape) SELECT ID, xkm, fuhao, tape FROM t,
(SELECT xkm, min(ID) as ID FROM t GROUP by xkm HAVING COUNT(*) > 1) m
WHERE t.ID = m.ID
关联新表删除t表中对应ID的记录
DELETE t FROM t, t1 WHERE t.ID = t1.ID
重复上述步骤,直到没有重复记录为止最后需要的话,重新处理各新表的ID值。