zaiyibo 2010-05-27 13:58
浏览 203
已采纳

mysql查询语句问题

请问下走过路过的大侠们:
情况:一张表Table1,字段id,field1,field2,field3.
查询条件&输出结果:
1.field2的值为“value”
2.按field1分组,取出最大sum(field3)对应的field1的值

例子:
field1 field2 field3
 1   value  3
 1   value  5
 2   value  4
 2   value  3
 2   value  2

根据field1可以分成两组,field1=1的sum(field3)= 3+5=8;field1=2的sum(field3)=4+3+2=9;那么,取最大的sum值,得到的结果是field1=2,即,2.

我写的sql语句很复杂,而且,感觉很烂:
[code="java"]select t3.field1 from Table t3 where t2.field2='value' group by t3.field1 having sum(t3.field3)=(select max(t2.c) from (select t1.field1,t1.field2,sum(t1.field3) c from Table t1 where t1.filed2='value' group by t1.field1) as t2)[/code]
or
[code="java"]select t3.field1 from (select t1.field1,t1.field2,sum(t1.field3) c from Table t1 where t1.field2='value' group by t1.field1) as t3 where t3.c=(select max(t2.c) from (select sum(t2.field3) c from Table t2 where t2.field2='value' group by t2.field1) as t3)[/code]

请问:是否有什么方式简化sql语句或者减少sql查询次数的?

其中,[code="java"]select t1.field1,t1.field2,sum(t1.field3) c from Table t1 where t1.filed2='value' group by t1.field1[/code]是重复的。

  • 写回答

1条回答

  • zyc850809 2010-05-27 15:09
    关注

    select field1 t from table
    where field2 = 'value' group by field1 order by sum(field3) desc
    然后取第一条 sql server是top 1,mysql是limit 1,oracle是 rownum = 1 这个就自己写了
    够简单了吧?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题