select count(id) as group_id from table_name group by id;
得到group_id

解决方案 »

  1.   

    可是放到case...when里边无法运行啊。
      

  2.   

    select id,count(id) as group_id from table_name group by id order by id;
    1  XXXX
    2  XXXX
    .....
      

  3.   

    我希望的是CASE (select id,count(id) as group_id from table_name group by id order by id;)
    WHEN...这样用
      

  4.   

    CASE WHEN之间应该是一个值,而不是一族值。
    WHEN THEN 各是什么条件?
      

  5.   

    不能是一组值吗? 那怎么实现对不同的ID值的批量计算呢?WHEN 0 THEN 一个数值  WHEN 1 THEN 一个数值(运算得出 WHEN 2 THEN 一个数值
      

  6.   

    select id,CASE(count(id))WHEN 0 THEN 一个数值  WHEN 1 THEN 一个数值 from table_name group by id order by id;你试试
      

  7.   

    我试了,可是我的SQL需要和令一个表RIGHT JOIN ,并且按那个表的一个字段GROUP BY这样的话,就没法按照ID进行GROUP BY了
      

  8.   

    嵌套在CASE...WHEN语句里边?????这句话怎么理解 ??
      

  9.   

    是这样的,对ID为1的,统计记录的条数,然后在CASE里判断,如果是0,相应处理,是1,相应处理
    类推然后,对ID为2的,也是像上面那样处理依此类推,一直到ID为N的。这些都需要在一个SQL里实现。
      

  10.   

    SELECT tA.ID, COUNT(*) FROM tA
    LEFT JOIN tB ON tA.ID = tB.ID
    GROUP BY tA.ID
      

  11.   

    楼上高手没有看上边我说的吧已经RIGHT JOIN令一个表了,并且使用了GROUP BY 另一个表名.name那么现在怎么对ID进行GROUP BY 呢?
      

  12.   

    目的是统计球员的上场时间(单场或多场的):table_construe_content表: id ,match_info_id,man,star_time,end_time,team_name
    其中,man字段是两个人,例如“王朋,李样”,star_time和end_time的值是一样的,分别代表“王朋”的下场时间,“李样”的上场时间。
    table_match_info_member表:id,match_info_id(代表某一场比赛),team_name,man_nametable_match_info表: id,type(代表场次,例如2003赛季第一轮)
      

  13.   

    table_construe_content表要和table_match_info_member表right join.并且GROUP BY man_name这样,table_construe_content表的ID怎么GROUP BY? 单纯加在man_name后边是不对的
      

  14.   

    table_construe_content表 和 table_match_info_member表 右连接,它们的match_info_id 
    字段相关联然后再和table_match_info表左链接,与id关联
      

  15.   

    目的是统计球员的上场时间(单场或多场的):
    table_match_info_member表和table_match_info表没什么问题!
    table_construe_content表的设计没法满足要求,起始上场阵容无法体现!
    其中man字段是两个人,例如“王朋,李样”,star_time和end_time的值是一样的,分别代表“王朋”的下场时间,“李样”的上场时间。
    这个字段设计得不好,没法统计!
      

  16.   

    谢谢了!我已经能统计出了像姓名  时间
    王    5000   ->这个是第一场的
    王    6000   ->这个是第二场的
    怎么将相同名字的,比如“王”的时间相加,得到两场的总和:11000?谢谢了
      

  17.   

    sum(时间) from ***** group by 姓名
      

  18.   

    我能看看你的SQL语句么?
    我现在还不明白我想表达的意思!
      

  19.   

    我能看看你的SQL语句么?
    我现在还不明白你想表达的意思!
      

  20.   

    我就是这样写的,不过都在一个SQL里边,没有作用啊
      

  21.   

    SELECT SQL_BUFFER_RESULT
      `b`.`man_name`,
      IF(`c`.`star_time` is null , 0, if(POSITION(concat(`b`.`man_name`, ',') IN `c`.`man`) > 0,`c`.`star_time`, `c`.`star_time`)) AS `ppp`,
    (CASE count(`c`.match_info_id)
     WHEN 0 THEN 5400 WHEN 1 THEN
    IF(POSITION(concat(`b`.`man_name`, ',') IN `c`.`man`) > 0,
      sum(if(
    (CAST(c.star_time as SIGNED)-1200)>5100,
    CAST(c.star_time as SIGNED) - 1200-400,
    CAST(c.star_time as SIGNED) - (if(CAST(c.star_time as SIGNED) < 3100,300,1200))))
    ,
      sum(if(CAST(c.star_time as SIGNED) < 3100,
       if(
    (CAST(c.star_time as SIGNED)-900-300)<5100,
    3100-CAST(c.star_time as SIGNED)+(7000-4000)-((7000-4000)+(3100-300)-5400),
    3100-CAST(c.star_time as SIGNED)+(7000-4000)),
       if(
    (CAST(c.star_time as SIGNED)-900-300)<5100,
    (7000-CAST(c.star_time as SIGNED))-((7000-4000)+(3100-300)-5400),
    (7000-CAST(c.star_time as SIGNED)))))
    )
    WHEN 2 THEN if(
    max(CAST(c.star_time as SIGNED)) > 4000 and min(CAST(c.star_time as SIGNED)) < 3100,
    if(
       max(CAST(c.star_time as SIGNED))-1200>5100,
       max(CAST(c.star_time as SIGNED))-min(CAST(c.star_time as SIGNED))-1300,
       max(CAST(c.star_time as SIGNED))-min(CAST(c.star_time as SIGNED))-900
       ),
    if (
         min(CAST(c.star_time as SIGNED)) > 4000,
         if (
             max(CAST(c.star_time as SIGNED))-1200>5100,
             if(max(CAST(c.star_time as SIGNED))-1200>5100 and min(CAST(c.star_time as SIGNED))-1200>5100,
             max(CAST(c.star_time as SIGNED))-min(CAST(c.star_time as SIGNED)),
             max(CAST(c.star_time as SIGNED))-min(CAST(c.star_time as SIGNED))-400),
             max(CAST(c.star_time as SIGNED))-min(CAST(c.star_time as SIGNED))
             ),
         max(CAST(c.star_time as SIGNED))-min(CAST(c.star_time as SIGNED))
    ))
    END) as swa
    FROM
      `table_construe_content` `c`
      right outer JOIN `table_match_info_member` `b` ON (`c`.`match_info_id` =`b`.`match_info_id`
      and POSITION(b.man_name in c.man)>0 and c.rule='18')  left join `table_match_info` `d` on (`b`.`match_info_id` =`d`.`id`)
     Where b.man_name<>'' and b.team_name='北京现代汽车队' and d.type like '%,45%'
      group by b.man_name,c.match_info_id
      
    请指教了
      

  22.   

    我现在执行之后的结果如下:姓名  时间
    王    5000   ->这个是第一场的
    王    6000   ->这个是第二场的
    怎么将相同名字的,比如“王”的时间相加,得到两场的总和:11000?看程序中,我用SUM不能得出两者相加的值,还是分开的
      

  23.   

    是写的太罗索了吧以前写的不多,见笑了我现在执行之后的结果如下:姓名  时间
    王    5000   ->这个是第一场的
    王    6000   ->这个是第二场的
    怎么将相同名字的,比如“王”的时间相加,得到两场的总和:11000?看程序中,我用SUM不能得出两者相加的值,还是分开的笑归笑,能不能告诉在下这个问题怎么解决?
      

  24.   

    你能否将你的那一堆查询结果保存到临是表,即:
    select .... into temp from yourtable where ...
    select name,sum(time)as time from temp group by name
    drop table temp
      

  25.   

    msn:[email protected]
    你现在能上么?
      

  26.   

    LEE,我用的是MYSQL,在EMS MYSQL MANAGER 里是正确的