下面这个两张表关联查询的SQL怎么写?

liulang457 2010-10-23 05:59:34

表A
a_id name
1 A1
2 A2
3 A3

表B
b_id value a_id
1 0.1 1
2 0.2 1
3 0.3 1
4 0.2 2
5 0.4 2
查询出A.*,B.*。条件是:表B中b_id最小且value值从0到0.3之间的记录。
得出结果应该是:
a_id name b_id value a_id
1 A1 1 0.1 1
2 A2 4 0.2 2

我的语句是这样的:

SELECT a.*,b.*
FROM A a
WHERE a.a_id IN(
SELECT b.a_id
FROM B b
WHERE
b.value > 0
AND b.value < 0.3
AND b.b_id = (SELECT MIN(bb.b_id) FROM B bb WHERE bb.a_id = a.a_id)
)

请大家指教有没有问题,或者有没有效率更高一点的方式

...全文
104 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-10-23
  • 打赏
  • 举报
回复
SELECT * FROM 
#TB t
LEFT JOIN
(
SELECT * FROM #TC C
WHERE NOT EXISTS(SELECT NULL FROM #TC WHERE C.a_id=a_id AND C.b_id>B_ID)
)M
ON m.a_id=t.a_id
WHERE m.[value] BETWEEN 0 AND 0.3

a_id name b_id value a_id
----------- -------------- -------------------------
1 A1 1 0.1 1
2 A2 4 0.2 2

(2 row(s) affected)
dawugui 2010-10-23
  • 打赏
  • 举报
回复
create table A(a_id int,name varchar(10))
insert into a values(1 ,'A1')
insert into a values(2 ,'A2')
insert into a values(3 ,'A3')
create table B(b_id int,value decimal(18,1) ,a_id int)
insert into b values(1, 0.1 ,1)
insert into b values(2, 0.2 ,1)
insert into b values(3, 0.3 ,1)
insert into b values(4, 0.2 ,2)
insert into b values(5, 0.4 ,2)
go

select a.* , t.* from a , b t where a.a_id = t.a_id and t.value between 0 and 0.3 and not exists (select 1 from b where a_id = t.a_id and value < t.value and value between 0 and 0.3)
/*
a_id name b_id value a_id
----------- ---------- ----------- -------------------- -----------
1 A1 1 .1 1
2 A2 4 .2 2

(所影响的行数为 2 行)
*/
select a.* , t.* from a , b t where a.a_id = t.a_id and t.value between 0 and 0.3 and value = (select min(value) from b where a_id = t.a_id and value between 0 and 0.3)
/*
a_id name b_id value a_id
----------- ---------- ----------- -------------------- -----------
1 A1 1 .1 1
2 A2 4 .2 2

(所影响的行数为 2 行)
*/
drop table a , b
dawugui 2010-10-23
  • 打赏
  • 举报
回复
create table A(a_id int,name varchar(10))
insert into a values(1 ,'A1')
insert into a values(2 ,'A2')
insert into a values(3 ,'A3')
create table B(b_id int,value decimal(18,1) ,a_id int)
insert into b values(1, 0.1 ,1)
insert into b values(2, 0.2 ,1)
insert into b values(3, 0.3 ,1)
insert into b values(4, 0.2 ,2)
insert into b values(5, 0.4 ,2)
go

select a.* , t.* from a , b t where a.a_id = t.a_id and t.value between 0 and 0.3 and not exists (select 1 from b where a_id = t.a_id and value < t.value and value between 0 and 0.3)

drop table a , b

/*
a_id name b_id value a_id
----------- ---------- ----------- -------------------- -----------
1 A1 1 .1 1
2 A2 4 .2 2

(所影响的行数为 2 行)
*/
dawugui 2010-10-23
  • 打赏
  • 举报
回复
select a.* , t.* from a , b t where a.a_id = t.a_id and t.value between 0 and 0.3 and not exists (select 1 from b where a_id = t.a_id and value < t.value)
内容概要:本文介绍了基于10机39节点的电力系统仿真资源,依托Matlab与Simulink平台,构建了完整的电力系统动态仿真模型,涵盖系统建模、潮流计算、暂态稳定性分析、短路故障模拟及动态响应评估等核心内容。资源不仅实现了标准测试系统的还原,还进一步拓展至虚拟同步发电机(VSG)控制、储能系统集成、微电网优化调度等先进应用场景,深入探讨了现代电力系统中新能源接入、频率调节与电压支撑等关键技术问题,具有较强的理论深度与工程实践价值。; 适合人群:具备电力系统分析基础及Matlab/Simulink操作能力的高校研究生、科研人员和电力行业工程技术人员,特别适用于从事电力系统稳定性研究、新能源并网技术、智能电网优化控制等相关领域的专业人员。; 使用场景及目标:①用于电力系统教学与科研中的动态仿真与稳定性分析;②支持含高比例新能源的微电网、储能系统与虚拟同步机等新型设备的控制策略验证;③为电力系统故障诊断、暂态过程分析、运行优化与调度决策提供高精度仿真平台;④辅助完成学术论文复现、课题研究及创新性算法开发。; 阅读建议:建议读者结合所提供的Matlab代码与Simulink模型逐模块运行,深入理解系统参数设置、元件建模方法与仿真流程设计,重点关注故障设置、控制器配置与仿真结果分析环节。对于复杂控制策略部分,应配合相关理论文献进行对照学习,并尝试在现有模型基础上进行功能扩展与算法改进,以提升综合应用与创新能力。

22,296

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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