第一句
select user_name,sum(company_part)as company_part from 
bets_casino where(home_team_name=1) group by  user_name order by company_part desc limit 1
第二句
select 
  count(*),
  sum(company_part),
  sum(user_amount),
  sum(company_amount),
  sum(IF(goal_home=3,odds*(1-sole_per-parter_per),amount*(1-sole_per-parter_per))),
  sum(IF(goal_home=3,odds*(1-sole_per-parter_per)*0.008,amount*(1-sole_per-parter_per)*0.008)) 
  from bets_casino where(home_team_name=1)MYSQL中怎样才能将2句查询语句合并为一条呢?在查询第2句的时候,也能得出第一句的结果??????

解决方案 »

  1.   

    感觉上好像两个sum(company_part)不是同个值,上面那个有group by的?
      

  2.   

    把两个表用 inner join连起来试试。select * from (select   user_name,sum(company_part)as   company_part   from   bets_casino   where(home_team_name=1)   group   by     user_name   order   by   company_part   desc   limit   1)as a 
    inner join 
    (select   count(*),   sum(company_part),   sum(user_amount),   sum(company_amount), sum(IF(goal_home=3,odds*(1-sole_per-parter_per),amount*(1-sole_per-parter_per))),  sum(IF(goal_home=3,odds*(1-sole_per-parter_per)*0.008,amount*(1-sole_per-parter_per)*0.008))  from   bets_casino   where(home_team_name=1)) as b;
      

  3.   

    select * from (select   user_name,sum(company_part)as   company_part   from   bets_casino   where(home_team_name=1)   group   by     user_name   order   by   company_part   desc   limit   1)as a 
    inner join 
    (select   count(*),   sum(company_part),   sum(user_amount),   sum(company_amount), sum(IF(goal_home=3,odds*(1-sole_per-parter_per),amount*(1-sole_per-parter_per))), 
    sum(IF(goal_home=3,odds*(1-sole_per-parter_per)*0.008,amount*(1-sole_per-parter_per)*0.008))  from   bets_casino   where(home_team_name=1)) as b;可以优化下么?如果数据海量,那应该比较慢吧!
     
       
      

  4.   

    这个表的数据计算量很大.能只查询一次表么?
    简化一点
    表table中字段id   name     money1     money2     money3    txt
    1     a        500        200        300       1
    2     b        200        100        200       1
    3     c        500        100        100       1
    4     d        200         88        -99       1
    5     a        600         77        -66       1
    6     b        500         55         33       1
    7     c        300         22        -11       1
    8     d        100         20         10       1
    9     a        600         77         66       2
    10    b        500         55         33       2
    11    c        300         22         11       2
    12    d        100         20         10       2select name,sum(money1)as money1 from 
    table where(txt=1) group by  name order by money1 desc limit 1
    //这样能查出txt=1的money1值最大的name和money1的值.select sum(money1) sum(money2) sum(money3) from table where(txt=1)
    //这样能查出txt=1的money1,money2,money3的和.我现在想显示的表格为:txt=1时sum(money1) |  txt=1时sum(money2) |  txt=1时sum(money3) | txt=1时money1值最大的name | txt=1时money1最大值
                   |          |          |      | 
      
      

  5.   

    我想问一下,你第一句用 limit   1 ,不是只有一个记录吗?第二个表没有group by很明显就只有一行啊
      

  6.   

    两个一行得表inner join是很快得,只是你给的那两个语句慢。还有,你两个语句的sum(company_part),统计的sum都不一样,第一个是group by的,第二个是全表的,而且,一个要求分组,一个要求不分组,怎么有可能一个简单句查出来。