用表中的UserID为1记录更新USerID的记录,如果USerID=1记录条数多过其他的,其他的UserID要增加一条类似的记录
有一表t1:
UserID    Col_Name   Seq
1          A         1
1          B         2
1          C         3
2          A         
2          B
3          A
更新后要成为:
UserID    Col_Name   Seq
1          A         1
1          B         2
1          C         3
2          A         1        
2          B         2
2          C         3
3          A         1
3          B         2
3          C         3
请问要怎么才能实现呢?

解决方案 »

  1.   

    INSERT INTO t1
                (userid, col_name, seq)
       SELECT aa.userid, aa.colname, aa.seq
         FROM (SELECT b.userid, c.colname, c.seq
                 FROM (SELECT col_name, seq
                         FROM t1
                        WHERE userid = 1) a,
                      (SELECT distnict userid
                         FROM t1
                        WHERE userid <> 1) b) aa
        WHERE NOT EXISTS (
                 SELECT 1
                   FROM t1 c
                  WHERE c.userid <> 1
                    AND c.userid = aa.userid
                    AND c.colname = aa.colname
                    AND c.seq = aa.seq)
      

  2.   

    楼主需求描述的不是太清楚:
    1、如果USerID=1记录条数少过其他的,怎么处理?
    2、USerID=1虽然多于其他的,但其他的中有USerID=1没有的Col_Name怎么办?
    3、根据楼主给出的例子,不只有添加操作,还有Col_Name相同时,修改Seq值为USerID=1的Seq值。
    请详细描述,以便操作