有个表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数据库,很多不懂,求助 

解决方案 »

  1.   

    DELIMITER $$USE `aa`$$DROP PROCEDURE IF EXISTS `ee`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `ee`()
    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.   

    仅通过SQL语句无法实现,必须通过程序或者存储过程。如果这只是一次性工作,则完全可以简单的用EXCEL来实现。步骤1: select distinct fuhao from 表t;   得到多少个fuhao
    步骤2: 复制结果到EXCEL,A列
    步骤3:EXCEL B1输入公式 ="create table t_"&A1&" as select * from 表t where fuhao='"&A1&"';"
    步骤4:B列公式向下填充
    步骤5;B列的内容SQL语句贴入MYSQL执行。
      

  3.   

    拆那么多表干啥查询得时候加where fuhao =xx不一样吗
      

  4.   

    先将重复记录插入新表,注意ID保持不变
    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值。