刚学的PHP,老板就要求用php写个操作数据库的工具
具体功能:
       有两张表:用户表(约4W条数据)、积分表
       两张表的公共字段是uid
       现在需要在积分表中,如果表中没有某一个uid的数据,就插入一条对应uid的记录,所有的uid都只有一条记录       求大神给点思路!!!

解决方案 »

  1.   

    1、把积分表的uid保存到一个数组$arr中。
    2、把用户表的uid循环in_array匹配数组$arr ,如果返回false,则添加一条对应uid的数据进去。
      

  2.   

    思路
    1.select uid from 用户表
    获取所有用户id2.循环遍历积分表,判断不存在uid的就插入
    select * from 积分表 where uid=xxxif(记录不存在){
        // 执行插入
        insert into 积分表(uid,xxx,xxx) values(uid, xxx, xxx);
    }
      

  3.   


    有14W个uid,积分表中目前也有10W+条数据,如何做到高效匹配?不然一次匹配14W条,系统能直接奔溃了
      

  4.   

    直接用sql语句,把所有要插入的uid查询出来怎么样?select uid from (select uid from user union all select uid from points)as b group by uid having count(*)=1;
    但是这个是(points表中有的uid。user表中肯定有)的前提
      

  5.   


    有14W条数据,分批查询的思路又是怎样的?如果像你说的这样做法,估计系统会直接卡死了不会卡死,你可以分批查询处理例如select uid from 用户表 limit $offset,$limit; 
    这里分页获取,然后再分批处理
      

  6.   


    这方法不科学吧,积分表中有的uid不一定存在用户表啊,因为用户表是可以允许存在手动删除啊
      

  7.   


    有14W条数据,分批查询的思路又是怎样的?如果像你说的这样做法,估计系统会直接卡死了不会卡死,你可以分批查询处理例如select uid from 用户表 limit $offset,$limit; 
    这里分页获取,然后再分批处理
    如果是用ThinkPHP又应该怎么实现呢
      

  8.   

    create temporary table temp select uid from 用户表 where uid not in (select uid from 积分表);
    insert into 积分表 (uid) select uid from temp;
      

  9.   

    这个用thinkphp没什么不同啊。思路懂就可以做出来了。