主表A,子表B,A表一对多B表,求显示A所有字段,B表字段时间M最大的一条数据的字段N,求SQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了主表A,子表B,A表一对多B表,求显示A所有字段,B表字段时间M最大的一条数据的字段N,求SQL相关的知识,希望对你有一定的参考价值。

参考技术A 可以这样
select A.*,B.N from A,B where A.col1 = b.col1 and b.M = (select max(M) from B where B.col1 = A.col1)
另外如果A中有但B中没有的也要显示的话可以改为左外连接
select A.*,B.N from A left join B on A.col1 = b.col1 where b.M = (select max(M) from B where B.col1 = A.col1)
参考技术B select * from A
left join (select B.id,max(M) from B group by B.id) t1
on A.id=t1.id
参考技术C 只能根据你写的 猜测你要的结果

select a.*,b.N from A a inner join (select top 1 关联字段,N from B order by M desc ) b on a关联字段. = b.关联字段
参考技术D select *,( select n from b where m=(select max(m) from b where id=a.id) and rownum<2) from a

oracle数据库,如果sql的话,需要将rownum换成其他的,任意取一个

感觉有问题,M如果有重复怎么办?随便取一个吗?

根据子表的条件修改主表的数据

有这么一个需求:写一条sql语句,功能是当B表中的字段2值=X的时候,修改A表中的一个字段1=Y,SQL语句如下:

update A表 set A表.字段1 = Y from A表 inner join B表
on A表关联字段=B表关联字段 where B表.字段2=X

 

以上是关于主表A,子表B,A表一对多B表,求显示A所有字段,B表字段时间M最大的一条数据的字段N,求SQL的主要内容,如果未能解决你的问题,请参考以下文章

什么是父表和子表

mysql 根据子表数量查询主表

Oracle数据库,关于关联两张表更新问题

根据子表的条件修改主表的数据

hibernate 联合主键一对多用注解怎么设置?

oracle查询包含在子表中的主表数据