用left join, 先sum,再max,如何写语句?

select A.*,b.生产长度 from 表1 A left join(select 机号_2,SUM(产量_2) as 生产长度,轴号_2 from 表2 group by 机号_2,轴号_2) B on A.机号=B.机号_2 and a.轴号=b.轴号_2

图片说明

用left join, 先sum,再max,如何写语句?在后加where max,只能找出表中一条最大值,我要找出每台机号的最大值

0

5个回答

declare 内存表 -- 定义一个内存表
-- 这个查询结果 保存在内存表中
insert into 内存表
select id from 表A
join
(select MAX(日期) 日期 from 表A) B
on 表A.日期 = B.日期

select A.*,b.生产长度 from 表1 A
join
(select 机号_2,SUM(产量_2) as 生产长度,轴号_2 from 表2 group by 机号_2,轴号_2) B
on A.机号=B.机号_2 and a.轴号=b.轴号_2

where A.ID in ( select id from 内存表)

0

不要用left join 直接使用 join 就可以了

0

select A.*,b.生产长度 from 表1 A
join
(select 机号_2,SUM(产量_2) as 生产长度,轴号_2 from 表2 group by 机号_2,轴号_2) B
on A.机号=B.机号_2 and a.轴号=b.轴号_2

0

declare maxDate datetime;-- 定义变量
select MAX(日期) into maxDate from 表2; -- 找出最大日期

select A.*,b.生产长度 from 表1 A
join
(select 机号_2,SUM(产量_2) as 生产长度,轴号_2 from 表2 where 日期 = maxDate group by 机号_2,轴号_2) B
on A.机号=B.机号_2 and a.轴号=b.轴号_2

0
qq_40076006
qq_40076006 不对哦,表2没日期
接近 2 年之前 回复

-- SQLserver 内存表的创建
declare @ageRange table(
lsh int,
mc nvarchar(128),
ageStart int,
ageEnd int
)

insert into @ageRange select * from 表

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
join连接表时是先join还是先where
转载地址:转载地址 left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。 right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。 inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。 full join:外连接,返回两个表中的行:left join + right join。 cross join:结果
Hive SQL on where 优化(先做join,left join时on中条件无过滤记录作用,后做where条件过滤记录。on 优先级高于 where)
1. select t.* from A f join B t on (f.id = t.id and f.分区=20181111 and t.分区=20181111) 2. select t.* from (select id from A where 分区=20181111) f join (select * from B where 分区=20181111) t on (f.id = ...
连接join的sql语句优化,join的统计语句,sum用法
连接 join的sql语句优化 1,笛卡尔积(缩小结果集) 2,获取的列的数目少----列少偏移量小,效率明显变高(尤其笛卡尔积大的情况下) 3,GROUP BY r.ORDERNO用于左连接时不增加左边的重复记录,用户统计部分     sum()里面如果加的是列的条件--统计的是符合条件的行数之和      里面直接是列统计的这一列的所有值纸盒     SELECT  ...
MySQL查询语句的执行顺序WHERE、JOIN等
执行顺序 from join on where group by (从此处开始可以使用select中指定的别名) avg、sum、max having select distinct order by 举例 select sum(goods.number) from order left join goods on goods.order_id = order.id where or...
SQL语言 group by 和 LEFT JOIN 关键字语句使用
MySql 语言 group by 和LEFT JOIN 关键字语句使用 (1) GROUP BY 语句 : GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。 语法: SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator ...
Mysql分页及JOIN优化
1、分页对于一个大表而言,mysql超过几十万行。分页就会有问题,此时先查询主键分页结果,再关联到表中的主要信息,会快很多。Select * from big_table eInner join (select id from big_table limit 4100000, 10) a on a.id = e.id2、join表时的特别处理使用组合索引,小表的变形sql处理等,不要使用子查询:这...
性能优化实战-join与where条件执行顺序
昨天经历了一场非常痛苦的性能调优过程,但是收获也是刻骨铭心的,感觉对sql引擎的原理有了进一步认识。 问题起源于测试人员测一个多条件检索的性能时,发现按某个条件查询会特别慢。对应的sql语句简化为:   [sql] view plain copy    print? select * from ta a,tb b   where a.bid=b.id   and a.col1='xx'  ...
sql(join on 和where的执行顺序)
sql(join on 和where的执行顺序) left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。 right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。 inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。 full join:外连接,返回两个表中的行:left join + right join。
sql(join on和where的执行顺序)
left join: 左连接,返回左表中所有的记录以及右表中连接字段相等的记录。 right join: 右连接,返回右表中所有的记录以及左表中连接字段相等的记录。 inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。 full join: 外连接,返回两个表中的行:left join + right join。 cross join: 结果是笛卡尔积,就是第一个...
mysql中left join on后面and 和where条件查询的差异
在select子句里能支持直接嵌套一个select子查询,但是该select子查询返回的结果集必须是单行,返回多行时会提示ORA-01427: single-row subquery returns more than one row(ORA-01427: 单行子查询返回多个行 )   sql里没有where条件,就不能写where了(否则报错), 直接 group by   order by ...
left join加上where条件的困惑
left join加上where条件的困惑
学习笔记-Laravel 数据库 聚合+Join 查找语句。
在利用laravel处理数据库数据的时候 简单的聚合可以直接实现: 聚合# 查询构造器也提供各式各样的聚合方法,如 count, max, min, avg 及 sum。 使用聚合方法# $users = DB::table('users')->count(); $price = DB::table('orders')->max('price'); $price = D
Oracle的left join和group by使用起来秒不可言
[img]D:\a.bmp[/img] 如上图的一张表,我要统计operateid分别为OPER000001,OPER000002,OPER000003有多少记录且按照OPER000001,OPER000002,OPER000003的统计结果进行desc排序。代码如下: [code="sql"] select a.id_item as id_item,a.operatenum as op...
关于left join 的连接条件和过滤条件的关系
left join的困惑:一旦加上where条件,则显示的结果等于inner join 将where 换成 and 用where 是先连接然后再筛选 用and 是先筛选再连接 过滤条件放在:where后面:是先连接然生成临时查询结果,然后再筛选 on后面:先根据条件过滤筛选,再连 生成临时查询结果总结: 对于left join,不管on后面跟什么条件,左表的数据全...
SQL改写, 聚合语句, left join 改写标量子查询
最近遇到一个SQL 改写, 其实改写难度一般,但连续强调用 left  join  改写标量子查询,   不知道为何 如此多的标量子查询 案例 说明: 为了公司机密, 所以用scott 用户表示   select d.*, (select count(*) from scott.emp) cnt1,      (select count(*) from scott.emp p
left join和group以及一些统计函数的探讨
关于left join       数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。       在使用left jion时,on和where条件的区别如下: 1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真(但是关联的其他表格的数据会为null),都会返回左边表中的记录。 2、where条件是在临时表生成好后,再对
改写优化SQL(3):聚合标量子查询改为left join
聚合标量子查询,是标量子查询的升级版,因为不是简单的返回一个字段,而是要对字段求 sum,avg等,也就是标量子查询+聚合函数。 但是这种写法,本质上还是标量子查询的写法,所以效率不高,建议改为left join方式。 (1)建表 CREATE TABLE tb_emp ( emp_id INT NOT NULL PRIMARY KEY CLUSTERED, emp_
关联查询是否需要先缩小查询范围?
现有如下需求: A表与B表中的一部分数据(where过滤)需关联查询,关联条件是A.id=B.id,那么我的sql需要怎么写,是select * from A join B on A.id=B.id where B.id>10 ? 还是 select * from A join (select * from B where id > 10) C on A.id = C.id ? 二者查询有区别
hive表在join on上的过滤和在where上过滤的对比
当两张表A和B在join时,条件筛选放在表join时的on上面和放在where上面得到的结果是不一样的。 如下创建两张表: A表结构以及数据:id name grade dept 1 lijie1 100 10 2 lijie2 90 20 3 lijie3 60 10 4 lijie4 80 10 5 lijie5 7
SQL中join操作后面的on与where的区别
join关键字的作用是将多个表按一定的条件联合起来,从而可以实现从多个表中获取数据 在join后面可以接on条件和where条件,在这里我主要就是说这两者之间的差别 建立两张简单的用来测试的表并添加数据,如下所示,一张表名为id_name,另一张表名为id_age 首先看看不添加条件——t2.age ='22'时的结果 SELECT * from id_name t1 LEFT ...
join 和 where的执行顺序
引言:今天一同学问我,join后面跟where查询条件,查询的时候是先关联再筛选的还是先各自筛选了再关联的?开始也就凭感觉,应该是先关联再筛选吧!他问了问为什么呢?后来我也越想越纠结了,于是找了两个表试了试,终于得出结论...   看sql:   A表:       id  name        1   aa        2   bb      B表:         id
Sql语句用left join解决多表关联问题(关联套关联,例子和源码)
Sql语句用left join解决多表关联问题(关联套关联,例子和源码)一看就明白多表关联如何写SQl语句
别再left join上面栽跟头,你需要知道的left join中 on 等值条件的作用
话说我就在left join这个问题上吃了亏,因为之前就知道有这么
left join中的筛选条件放到on之后还是where后面
1.表1  2.表2  第一条sql select * from test_1 t1 left join test_2 t2 on (t1.name=t2.name and t2.name='name1'); 查询结果 ,这里sql中的t2.name换成t1.name效果是一样的 第二条sql select * from test_1
mysql sum join 多表统计求和时不正确的问题
我在做订单统计的时候遇到问题,就是多表求和时发现不正确 我有下面两个表 -- -- 表的结构 `mobile_shops_orders` -- CREATE TABLE IF NOT EXISTS `mobile_shops_orders` ( `oid` varchar(80) NOT NULL, `userid` int(10) NOT NUL
Hibernate中HQL语句的left join的例子详解
1.com.jcuckoo.entity添加ShowBook类,用来封装界面显示的数据 public class ShowBook { @Id private int id; private String name; private String author; private String publisher; private double price; private Stri
sql 条件加在 left join 与where后面的区别
做项目时遇到一问题,前台页面查询数据查不到,后台能查询到数据,百思不得其解,查询的sql如下: select *  from xxx poi left join yyy css on poi.ORG_ID = css.ORG_ID  where 1=1   and( (css.RPT_YEAR = 2009 ) or  (css.RPT_YEAR is null ) ) 本来是想以po
SQL 左连接(left join) 排序 分页 中遇到的未按理想状态排序分页的解决方案
语句目标: 以主表排序后并进行分页,而后再去连接其它表 出现问题: 最终主表并没有按照预想进行顺序输出,但是分页的数据是正确的。 来自 stackflow 解答: No, the JOIN by order is changed during optimization.
MySQL下limit和join的优化建议
PHP中分页肯定会使用到MySQL的limit,大部分对类似"select * from title where uid =** order by id desc limit m,n"很熟悉,也不是全部都能看出里面有什么不对,可是当是在大数据量下操作呢,比如百万类似"select * from title where uid =177 order by id desc limit 1234567,
join 与 group by问题后续
昨天的问题,的确在sql server上问题明显,可是同样的数据库、同样的表、同样的查询语句,它却可以在mysql上执行,对于sql server与mysql的区别我并不清楚, 下面写一下我对于这可问题的探索过程: 因为我是在github上照着别人练习的例子练习的,既然别人写的查询语句都贴上来了,肯定是运行成功了,于是我就想在mysql上试一试,还好我之前装了mysql。 下面是两个
《数据库SQL实战》两次left join
数据库 left join
数据库多表连查SQL运用Join语句和聚合语句(Group By)
现在设有简单的表(里面的主键外键就不写了): Create table Employee( EmpID int, EmpName nvarchar(10), DepID int); Create table Department( DepID int, DepName nvarchar(10)); Create talbe Manager( EmpID in
关于SQL中Union和Join的用法
转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 一直以来,对于数据库SQL方面都是半吊子水平,能写一些基本的增删改查的语句,大部分时间都是用下Where,偶尔用用Order By、Limit,Like什么的。连表查询也是一些很简单的使用。至于那些高级用法,都还给老师了。最近接腾讯的IDIP的SDK,需要查询一些游戏数据,发现自己的SQL水平不够用,温
sql left join 联合查询示例
select                 a.su_id,                 a.su_code,                 a.su_name,                 a.su_contact,                 a.su_type,                 a.so_id,                 a.wb_type
sql中left join的理解
熟悉下sql中的left join,其他连接,下篇文章会放在一起写。 关于 “A LEFT JOIN B ON 条件表达式” 的一点提醒ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行。如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 NULL 的数据在匹配阶段 WHERE 子句的条件都不会被使用。仅在匹配阶段完成以
两个sql查询语句之间的左连接left join
代码如下:子查询内部也使用了左连接select a.id, a.thumbNail,a.name,a.marketPrice,a.memberPrice ,a.personName,a.status,a.recieveOrderDate,a.trackNumber,a.contact,a.reportSendDate,b.trackNumber,a.reportDownloadPath from 
SQL查询时的join与where筛选比较
参考:https://blog.csdn.net/yanggufyf123/article/details/73549578 转载地址:转载地址 left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。 right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。 inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行。 ...
SQL 查询语句(inner join 与 left join) 之间的区别
SQL查询语句: 1. 查询中用到的关键词主要包含六个,书写顺序为 select--from--where--group by--having--order by 2. 但是他们的执行顺序为  from--where--group by--having--select--order by 3. 多表查询的执行顺序为 from--join--on--where--group by--聚合函...
数据库中left join 的on条件与where条件的区别
 数据库在连接两张或多张表时,首先会生成一张临时的中间表,然后再将这张临时表返回给用户。在使用left jion 时,on和where条件的区别如下:      1. on条件是在生成临时表时使用的,它不管on后面的条件是否为真,都会返回左边表中的记录,and只会过滤掉右边表中的记录。      2.where条件是在临时表生成好后使用的,是对临时表进行过滤的条件,会将条件不为真的记录通...
Hibernate中SQL语句的left join的例子详解
在Hibernate中HQL语句的left join的例子详解
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 先刷题还是先学习java 数据库原理的先修课程