请教一个三表查询 语句 如何写?

wwle 2022-09-14 15:33:25

a 主表 b 是从表 id 与 pid 关联
b 是主表,c 是从表  关键字是 sfzh   c 中有一个djrq 字段,
我想 a ,b 和 c 交叉查询,  但是 c 只要一条记录  djrq 最大值 的那条

 

select a.id,a.ctitle,b.sfzh,b.xm from ashiwu a inner join adetail b on a.id=b.pid and a.id=2  left  后面不会写了,

其实这个关键点是   c 表如何  按sfzh djrq 获取最近的一条记录?

谢谢啊

 

...全文
73 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
猫狸嘎 2022-09-15
  • 打赏
  • 举报
回复

select
*
from
A
inner join B on B.pid = A.id
outer apply(select 最大djrq = max(djrq) from C where C.sfzh = B.sfzh)T1    
幸福感奇差 2022-09-15
  • 打赏
  • 举报
回复 1

正常 left join c 表,用一个窗口函数标出最大值 max(djrq) over(partition by 你的分组字段),
整个查询作为内部的子查询,外面用 where 筛选一下 c 的对应字段等于这个最大值就好

wwle 2022-09-15
  • 举报
回复
@幸福感奇差 谢谢英雄 ,窗口函数,我不太懂啊 能否写个例子。 我好像几年前看过一本收, 在 select 和 from 中间可嵌入一个select
wwle 2022-09-15
  • 举报
回复
@幸福感奇差 明白 了,我刚才看了看,研究了一下,明白 了。 谢谢您

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧