例如: 
iD        A         
            1        10
            1        34
            1        54
            2        23
            2        45
            3        33查询后 :
            iD        A       B  
            1        10      98
            1        34      98
            1        54      98
            2        23      68
            2        45      68
            3        33      33

解决方案 »

  1.   

    没有你的表,我自己新建了一个临时表,你直接执行以下语句即可。
     
    SELECT T.*,(SELECT SUM(T1.A) FROM ( 
     SELECT '1' ID,'10' A FROM DUAL UNION ALL 
     SELECT '1','34' FROM DUAL UNION ALL 
     SELECT '1','54' FROM DUAL UNION ALL 
     SELECT '2','23' FROM DUAL UNION ALL 
     SELECT '2','45' FROM DUAL UNION ALL 
     SELECT '3','33' FROM DUAL ) T1 WHERE T1.ID = T.ID) B FROM ( 
     SELECT '1' ID,'10' A FROM DUAL UNION ALL 
     SELECT '1','34' FROM DUAL UNION ALL 
     SELECT '1','54' FROM DUAL UNION ALL 
     SELECT '2','23' FROM DUAL UNION ALL 
     SELECT '2','45' FROM DUAL UNION ALL 
     SELECT '3','33' FROM DUAL ) T ;
      

  2.   

    我这个表是过程中创建出来的零时表,用你这个方法,它提示Can't reopen table: 'T1'。不能重复读取,怎么办?
      

  3.   

    分析函数不就ok了吗WITH tmp AS (
    SELECT
    1 AS p_id,
    10 AS p_col UNION ALL
    SELECT
    1,
    34 UNION ALL
    SELECT
    1,
    54 UNION ALL
    SELECT
    2,
    23 UNION ALL
    SELECT
    2,
    45 UNION ALL
    SELECT
    3,
    33 
    ) SELECT
    tmp.* ,sum(p_col)over(partition by p_id order by p_id ) p_sum
    FROM
    tmp;
      

  4.   

    楼上的,发错地方了吧,那个是ORACLE的语法,MYSQL跑不过去的。
      

  5.   

    第一步:添加一个total列作为总分;
                 alter table 表名 add total int;
    第二步:计算;
    update 表名 set total=(A+B);
      

  6.   

    SELECT t1.ID, t1.score, t2.sum_socre
    FROM myt
    JOIN (
    SELECT ID, SUM(score) AS sum_socre
    FROM myt
    GROUP BY ID
    ) t2
    ON t1.ID = t2.ID