none
sql语句根据客户表不同创建人 修改自增列 RRS feed

  • 问题

  • 情况是这样的,在做客户导入excle数据的时候,选择excle文件点击导入

    1.把所有excle数据加载到datatable ex_data 并通过ex_data到复制到临时表temp ----这部可能有很多人同时操作 根据登录人的id判断

    2.调用存储过程 

    3.sql语句判断temp表的数据是否正确、是否存在

    4.把temp表错误的数据、已经存在的数据删除 然后插入到customer

    这么做的好处是点击保存的时候只连接数据库2次就可以完成导入几万的数据量

    问题来了,客户表customer 有个编码code是自动生成的 根据登录人姓名不同生成 比如zhangsan001、zhangsan002、zhangsan003

    现在不管上面那一步操作都是对datatable操作 不是循环行,而且要根据登录人的id判断 所以ex_data表所有数据code都是为空,

    需要在第三步操作的时候修改相应temp表code, 怎么一次性修改, 我想的是通过每个登录人的id 添加数据的时候 添加一个序号列lie

    但是不晓得怎么修改这个序号列lie 还要根据不同的登录人 ,谢谢大家了


    学习中...

    2012年12月5日 12:11

答案

  • 你的办法没有问题,我也这样写过,后来考虑到那个表没有字段相关联 所有没有那样做,

    问题解决了,是这样搞的,添加到临时表的时候插入一列,ROW_NUMBER() OVER(ORDER BY update_date_time asc),


    学习中...

    • 已标记为答案 猫子 2012年12月7日 5:59
    2012年12月7日 5:59

全部回复

  • 可以使用登录名称如zhangsan+rownumber 函数 生成你要的这个列值,然后update上去。


    family as water

    2012年12月6日 2:08
  • select ROW_NUMBER() OVER(ORDER BY update_date_time asc)
     from customer 这样可以获取表所有序列号,但是update应该怎么写,我试了几个都不行

    学习中...

    2012年12月6日 2:11
  • 类似这样

    UPDATE DATA SET
    	id = ID.id
    FROM 你的表 DATA
    	INNER JOIN(
    		select 
    			id = ROW_NUMBER() OVER(ORDER BY update_date_time asc),
    			主键
    		FROM 你的表
    	)ID
    		ON ID.主键 = DATA.主键

    2012年12月6日 3:21
  • 你的办法没有问题,我也这样写过,后来考虑到那个表没有字段相关联 所有没有那样做,

    问题解决了,是这样搞的,添加到临时表的时候插入一列,ROW_NUMBER() OVER(ORDER BY update_date_time asc),


    学习中...

    • 已标记为答案 猫子 2012年12月7日 5:59
    2012年12月7日 5:59