示例数据:
档案号            考试序号        姓名          单位
-------------------------------------------------------------
NULL           330009 韦兵 北京一中
NULL           588359 韦兵 北京一中
NULL           731362 韦兵 北京一中
NULL           980222 韦兵 北京一中
8000330009   1296508 韦兵 北京一中
8000330009   1540863 韦兵 北京一中
NULL           330080 冯义 北京一中
NULL           981798 冯义 北京一中
NULL           329961 勇韦 北京一中
NULL           588295 勇韦 北京一中
NULL           731306 勇韦 北京一中
NULL           329972 中甘 北京一中
NULL           588313 中甘 北京一中
NULL           588313 中甘 北京一中
NULL           731317 中甘 北京一中
NULL           980223 中甘 北京一中
8000329972   1296509 中甘 北京一中
8000329972   1540864 中甘 北京一中
期望数据结果:
档案号            考试序号        姓名          单位
-------------------------------------------------------------
8000330009   330009 韦兵 北京一中
8000330009   588359 韦兵 北京一中
8000330009    731362 韦兵 北京一中
8000330009    980222 韦兵 北京一中
8000330009   1296508 韦兵 北京一中
8000330009   1540863 韦兵 北京一中
NULL           330080 冯义 北京一中
NULL           981798 冯义 北京一中
NULL           329961 勇韦 北京一中
NULL           588295 勇韦 北京一中
NULL           731306 勇韦 北京一中
8000329972   329972 中甘 北京一中
8000329972   588313 中甘 北京一中
8000329972   588313 中甘 北京一中
8000329972   731317 中甘 北京一中
8000329972   980223 中甘 北京一中
8000329972   1296509 中甘 北京一中
8000329972   1540864 中甘 北京一中说明:根据用户名字和单位,查询出档案号(若不为null),填充到用户档案号中。请教,该如何完成,谢谢。

解决方案 »

  1.   

    select b.档案号, a.考试序号, a.姓名, a.单位 from 表 a left join (select max(档案号) 档案号, 姓名 from 表 group by 姓名) b on a.姓名=b.姓名
      

  2.   

    select b.档案号,a.考试序号,a.姓名,a.单位 from table a
    left join (select 档案号,姓名,单位 from table where 档案号 is not null group by 档案号,姓名,单位) b on a.姓名=b.姓名 and a.单位=b.单位
      

  3.   

    是要执行update,而不是select操作。
      

  4.   

    update t
    set [档案号]=(select MAX([档案号]) from tb where [姓名]=t.[姓名] and [单位]=t.[单位])
    from tb as t
    where t.[档案号] is null
      

  5.   

    sql执行有错误呢
      

  6.   

    update a set 档案号=b.档案号 from table a
    left join (select 档案号,姓名,单位 from table where 档案号 is not null group by 档案号,姓名,单位) b on a.姓名=b.姓名 and a.单位=b.单位
    where a.档案号 is null
    select 语句都给出来了 自己变一下就成update语句了
      

  7.   

    报啥错?
    tb换成你的表名,t是别名不用管。
      

  8.   

    搞忘记说了,是mysql,语句在mysql下始终有问题
      

  9.   

    引用楼上改改update t
    set [档案号]=(select TOP 1 [档案号] from tb where [姓名]=t.[姓名] and [单位]=t.[单位] AND [考试序号]>t.[考试序号] AND [档案号] IS NOT NULL ORDER BY 考试序号 ASC)
    from tb as t
    where t.[档案号] is null
      

  10.   


    顶你个肺啊……
    UPDATE tb a,(SELECT [姓名],[单位],MAX([档案号]) AS [档案号] FROM tb GROUP BY [姓名],[单位]) b
    SET a.[档案号]=b.[档案号]
    WHERE a.[姓名]=b.[姓名] AND a.[单位]=b.[单位] AND a.[档案号] IS NULL