sqlserver一对多查询

askformore110 2014-01-16 05:57:28
表1 A
aid,name (aid唯一)
10 sel
表2 B
aid,status(插入了多个aid的记录,staus状态不同)
10 1
10 2
10 3
A关联查询B的最后一条数据,并可进行status条件查询(where B.status=3)
结果
aid name status
10 sel 3
...全文
546 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
wskicfuu 2014-01-19
  • 打赏
  • 举报
回复
B表必须要排序,不然不可能找到你说的B表的最后一条记录
wangyuping_2007 2014-01-18
  • 打赏
  • 举报
回复
实在是简单,看来都会
wangzhi0321 2014-01-17
  • 打赏
  • 举报
回复
create table #a(
id int,
name varchar(50)
)
insert into #a(id,name) values(10,'aa')
insert into #a(id,name) values(11,'bb')
insert into #a(id,name) values(12,'cc')
insert into #a(id,name) values(13,'dd')

create table #b(
id int,
statuss int
)
insert into #b(id,statuss) values(10,3)
insert into #b(id,statuss) values(11,4)
insert into #b(id,statuss) values(11,3)
insert into #b(id,statuss) values(10,5)

--#b表 statuss 最大值

select MAX(statuss) statuss,id  into #c from #b group by id
select a.name, c.id,c.statuss from #a a inner join #c c on
a.id=c.id
--where b.statuss=3


drop table #a
drop table #b
drop table #c
lyx266 2014-01-17
  • 打赏
  • 举报
回复

select 
   A.aid,A.name,B.status 
from 
   A 
   left join 
   (select max(bid) bid,aid,status from B group by aid,status)B on A.aid=B.aid 
where
   B.status=3
askformore1100 2014-01-17
  • 打赏
  • 举报
回复
事实证明来论坛也没用,自己给出答案吧 select a.aid,a.name,b.status from A where (select Max(bid) from B where A.aid=B.bid and.status=3) is not null
askformore110 2014-01-17
  • 打赏
  • 举报
回复
坐等高手。。
askformore110 2014-01-17
  • 打赏
  • 举报
回复
引用 7 楼 starfd 的回复:
[quote=引用 6 楼 askformore110 的回复:] [quote=引用 3 楼 pukuimin1226 的回复:] 我直接写的,应该差不多是这样,这样的基本问题呀。。 select a.aid,a.name,b.status from a join b on a.aid=b.aid where b.status=3
B表 aid status 10 3 10 3 如果有两个status=3的时候 那你两个都查出来了 我只要最后一个数据[/quote] 你就不能查出来后再程序里再做处理的。。。。非要把所有事情都压在数据库上啊 况且按你的描述“插入了多个aid的记录,staus状态不同”哪可能存在同一个aid对应两个相通的status啊[/quote] 表1 A aid,name (aid唯一) 10 sel 表2 B bid,aid,status(插入了多个aid的记录) 1 10 1 2 10 2 3 10 3 4 10 2 5 10 3 A关联查询B的最后一条数据,并可进行status条件查询(where B.status=3) 结果 aid name status 10 sel 3
askformore110 2014-01-17
  • 打赏
  • 举报
回复
表1 A aid,name (aid唯一) 10 sel 表2 B bid,aid,status(插入了多个aid的记录) 1 10 1 2 10 2 3 10 3 4 10 2 5 10 3 A关联查询B的最后一条数据,并可进行status条件查询(where B.status=3) 结果 aid name status 10 sel 3
  • 打赏
  • 举报
回复
引用 6 楼 askformore110 的回复:
[quote=引用 3 楼 pukuimin1226 的回复:] 我直接写的,应该差不多是这样,这样的基本问题呀。。 select a.aid,a.name,b.status from a join b on a.aid=b.aid where b.status=3
B表 aid status 10 3 10 3 如果有两个status=3的时候 那你两个都查出来了 我只要最后一个数据[/quote] 你就不能查出来后再程序里再做处理的。。。。非要把所有事情都压在数据库上啊 况且按你的描述“插入了多个aid的记录,staus状态不同”哪可能存在同一个aid对应两个相通的status啊
askformore110 2014-01-17
  • 打赏
  • 举报
回复
引用 3 楼 pukuimin1226 的回复:
我直接写的,应该差不多是这样,这样的基本问题呀。。 select a.aid,a.name,b.status from a join b on a.aid=b.aid where b.status=3
B表 aid status 10 3 10 3 如果有两个status=3的时候 那你两个都查出来了 我只要最后一个数据
askformore110 2014-01-17
  • 打赏
  • 举报
回复
引用 2 楼 mail_ylei 的回复:

select 
   A.aid,A.name,B.status 
from 
   A 
left join 
   B on A.aid=B.aid 
where
   B.status=3

B表 aid status 10 3 10 3 如果有两个status=3的时候 那你两个都查出来了 我只要最后一个数据
askformore110 2014-01-17
  • 打赏
  • 举报
回复
引用 1 楼 zxy397472251 的回复:

select b.aid,a.name,b.status from a inner join b on  a.aid=b.aid
where b.status=3
B表 aid status 10 3 10 3 如果有两个status=3的时候 那你两个都查出来了 我只要最后一个数据
md5e 2014-01-17
  • 打赏
  • 举报
回复
Select * From( Select aid,[name],(select top 1 [status] From B Where A.aid=B.aid Order by [status] DESC) as status From A ) Where status=3
md5e 2014-01-17
  • 打赏
  • 举报
回复
表2 B aid,status(插入了多个aid的记录,staus状态不同) 10 1 10 2 10 3 我怎么知道哪个是最后一条记录?以什么方式进行排序?
djy252 2014-01-17
  • 打赏
  • 举报
回复
如果是join的话,可以考虑下用 B 关联A,B先group 取到最大的 记录然后和A级联 这是思路
mail_ylei 2014-01-17
  • 打赏
  • 举报
回复


select 
  top 1 A.aid,A.name,B.status 
from 
   A 
left join 
   B on A.aid=B.aid 
where
   B.status=3
order by
   B.bid desc

真爱无限 2014-01-16
  • 打赏
  • 举报
回复
我直接写的,应该差不多是这样,这样的基本问题呀。。 select a.aid,a.name,b.status from a join b on a.aid=b.aid where b.status=3
mail_ylei 2014-01-16
  • 打赏
  • 举报
回复

select 
   A.aid,A.name,B.status 
from 
   A 
left join 
   B on A.aid=B.aid 
where
   B.status=3

CqCoder 2014-01-16
  • 打赏
  • 举报
回复

select b.aid,a.name,b.status from a inner join b on  a.aid=b.aid
where b.status=3
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执行器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执行机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执行器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡行为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬行、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进行对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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