sql中引用一个表的查询结果作为条件来查询另一个表如何实现?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中引用一个表的查询结果作为条件来查询另一个表如何实现?相关的知识,希望对你有一定的参考价值。

我自己想了下大概是这样的:

select 消费号,sum(金额)金额 from 护理卡消费
where exists (
select distinct a.消费号 from 护理卡消费历史 a ,护理卡消费 d
where a.服务名称 in (select b.服务名称 from 服务类别 b where b.服务项目类别='面部护理')
and a.消费号=d.消费号
)
group by 金额,消费号
with rollup
可是结果却不对,以上查询后把所有的内容都查询出来了,并没有根据子查询里面选择出来的消费号,进行外表查询,求如何实现?

sql中引用一个表的查询结果作为条件来查询另一个表称为sql嵌套查询。

简单子查询

示例:Copyselect name,age from person 

where age > 

   (        select age from person 

       where name = '孙权'

   )

in嵌套查询

in关键字用于where子句中用来判断查询的表达式是否在多个值的列表中。返回满足in列表中的满足条件的记录。

示例:

select name from person 

 where countryid in 

(

select countryid from country

where countryname = '魏国'

)

扩展资料

子查询的语法规则

1、子查询的select查询总是使用圆括号括起来。

2、不能包括compute或for.browse子句。

3、如果同时指定top子句,则可能只包括order by子句。

4、子查询最多可以嵌套到32层。个别查询可能会不支持32层嵌套。

5、任何可以使用表达式的地方都可以使用子查询,只要它返回的是单个值。

6、如果某个表只出现在子查询中二不出现在外部查询中,那么该表的列就无法包含在输出中。

子查询的组成

1、包含标准选择列表组件的标准select查询。

2、包含一个或多个表或者视图名称的标准from子句。

3、可选的where子句。

4、可选的group by子句。

5、可选的having子句。

参考技术A

1、用sqlserver作为测试,创建学生、教师、班级三张表。每张表都有一个id,int类型的(自增长),作为每个表的主键。

2、添加测试数据,并创建班级与学生、教师与班级的中间表。insert into dbo.Student(Sname) values('张三'),插入多条,由于id自增长所以sid自动填充了。类似将教师和班级也添加上测试数据。

3、创建班级教师表Class_Teacher,班级学生表Class_Student。

4、然后将1和2 放到1班,3和4放到2班。5和6 不放(可以理解为刚入学没有分配班级)。然后将3个老师分配到3个班级insert into dbo.Class_Teacher values (1,1)insert into dbo.Class_Teacher values (2,2)insert into dbo.Class_Teacher values (3,3)。

5、这样,1班和2班各有两名同学,3班没有同学,有两个同学没有分配班级,每一个老师都分配了班级。现在要查询所有班级学生情况。

参考技术B exists 这个里面得要包含和外面表的关系的。

select 消费号,sum(金额)金额 from 护理卡消费 T
where exists (
select distinct a.消费号 from 护理卡消费历史 a left join 护理卡消费 d on a.消费号=d.消费号
where a.服务名称 in (select b.服务名称 from 服务类别 b where b.服务项目类别='面部护理')
and t.消费号=a.消费号 )
group by 金额,消费号
参考技术C exists 这个里面得要包含和外面表的关系的。

select 消费号,sum(金额)金额 from 护理卡消费 T
where exists (
select distinct a.消费号 from 护理卡消费历史 a left join 护理卡消费 d on a.消费号=d.消费号
where a.服务名称 in (select b.服务名称 from 服务类别 b where b.服务项目类别='面部护理')
and t.消费号=a.消费号 )
group by 金额,消费号

你这样试试本回答被提问者采纳

如何将一个表的查询结果插入到另一个表中?

将查询结果插入到另一个表的三种情况

一:如果要插入目标表不存在:

select * into目标表 from 表 where ...

二:如果要插入目标表已经存在:

insert into目的表 select * from 表 where 条件

三:如果是跨数据库操作的话: 怎么把A数据库的atable表所查询的东西,全部插入到B 数据库的btable表中

select * intoB.btable from A.atable where ...

同样,如果是跨服务器的,也是可以的。

参考技术A 1.
这里有两张表格,在表1中,有两个人的数学成绩。
2.
而在表2中,有两个人的物理成绩,我们要做的就是将表2中物理成绩导入表1中。
3.
在表1中,先选中“郝帅”对应的物理成绩的C2单元格,点击“插入”、“插入函数”。
4.
在“选择类别”中选择“查找与引用”。
5.
在函数中选择“VLOOKUP”,点击确定,然后点击弹出来的小窗口中第一行旁边的按钮。
6.
再点击“郝帅”所在单元格A2即可看到旁边的小窗口中出现了对应的字样。
参考技术B 如果表存在:
insert into tab1 select * from tab2;
如果表不存在:
create table tab1 as select * from tab2;
参考技术C 首先你查询后结果的字段与你要插入的表的字段的类型要一致,假入表 1,表2
将表2中查询出的结果插入到表1中,SQL如下(ORACLE):
INSERT INTO 表1(字段1,字段2,字段n)
select 表2.字段1,表2.字段2,表2.字段n from 表2

这样就可以满足你的要求

以上是关于sql中引用一个表的查询结果作为条件来查询另一个表如何实现?的主要内容,如果未能解决你的问题,请参考以下文章

将一个表的查询结果插入到另一个表中(oracle、mysql、sql 、GP)

如何将一个表的查询结果插入到另一个表中?

sql的嵌套查询,把一次查询的结果做为表继续进一步查询;内联视图

sql子查询 嵌套SELECT语句

sql子查询 嵌套SELECT实用语句

sql 如何把一个查询结果当作一个表来查询?