当前位置:首页 » 编程语言 » sqlselect子查询
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlselect子查询

发布时间: 2023-03-27 05:53:11

sql子查询如何使用主查询里的字段作为筛选条件

sql子查询使用主查询里的字段作为筛选条件的方法:
使用SELECT子句、GROUP BY子句、HAVING子句、ORDER BY子句中均可使用子查询语句,较常用的是WHERE子句、HAVING子句和FROM子句。
子查询是在一个完整的查询语句中,嵌套不同功能的小查询,从而完成复杂查询的一种编写形式。本部分主要介绍非关联子查询,关联子查询的适用场景,语句写法,执行逻辑及相对应的注意事项。

Ⅱ SQL必知必会(二)函数、子查询

#文本处理函数

UPPER()     --大写

LOWER()    --小写

SOUNDEX()   --读音类似

LENGTH()    --字符串长度

#日期和时间处理函数

SELECT order_code

FROM order_table

WHERE DATEPART(yy,order_date)=2012

#to_char()函数提取日期成分,MySQL可用year()函数提取年份

SELECT order_num

FROM order_table

WHERE to_number(to_char(order_date,'YYYY'))=2012;    --to_char提取日期成分to_number转化为数值

SELECT order_num

FROM order_table

WHERE order_date BETWEEN to_date('01-01-2012') AND to_date('12-31--2012');    --字符串转日期

#数值处理函数

ABS()    --绝对值

COS()    --余弦

EXP()    --指数值

PI()   --圆周率

SIN()    --正弦

SQRT()    --平方根

TAN()    --正切

#平均数AVG()

SELECT AVG(a) AS avg_a

FROM tableA

WHERE a='DLL01';

#计数

SELECT COUNT(*)  AS num_cust              --对所有行计数,不管是否NULL值

FROM tableA;

SELECT COUNT(a) AS num_a          --指定了列名,会忽略NULL值

FROM tableA;

#最值

MAX()和MIN(),忽略NULL值

#总值SUM(),忽略NULL值

SELECT SUM(price*quantity) AS total_price

FROM tableA

WHERE order_code=20008

#以上聚集函数只包含不同值

SELECT AVG(DISTINCT order_price) AS avg_price

FROM tableA

WHERE id='DLL01';

两个子句:GROUP BY 和 HAVING

#GROUP BY创建分组HAVING过滤分组

SELECT vend_id, COUNT(*) AS num_prods

FROM tableA

WHERE price>=4

GROUP BY vend_id

HAVING COUNT(*)>=2;   

ORDER BY price    --GROUP BY在WHERE之后在ORDER   BY之前

SELECT

FROM

WHERE

GROUP BY

HAVING

ORDER BY

#子查询顺序为从内而外

SELECT order_num 

FROM tableA

WHERE id='DLL01';

(输出20007和20008)

SELECT id

FROM tableB

WHERE order_num IN(20007,20008);

#合并为子查询。只能查询单个列

SELECT id

FROM tableB

WHERE order_num IN (SELECT order_num FROM tableA WHERE id='DLL01')

SELECT  cust_name,

                cust_state

                (SELECT COUNT(*) 

                 FROM Orders

                WHERE Orders.cust_id=Customers.cust_id) AS orders

FROM Customers

ORDER BY cust_name;

#Orders.cust_id=Customers.cust_id完全限定列名,在两张表中名字相同列拿出来比较,防止歧义

Ⅲ sql 子查询如何写

select id from 表A
full join
(select id,count(id) from 表B group by id)
on A.id=B.id

Ⅳ SQL中SELECT中的FROM子句可否带另外一个SELECT

可以
SQL中SELECT嵌套
SELECT语句
是很常见的
SQL语句
,嵌套SELECT语句也叫
子查询
,一个SELECT
语句的查询结果能够作为另一个语句的输入值。子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个
临时表
使用,也能够出现在select
list中,作为一个字段值来返回。
例1:select子查询出现在Where子句中
select
ename,deptno,sal
from
emp
where
deptno=(select
deptno
from
dept
where
loc='NEW
YORK');
例2:select子查询出现在from子句中
SELECT
ename,job,sal,rownum
FROM
(SELECT
ename,job,sal
FROM
EMP
ORDER
BY
sal);
例3:select子查询出现在select
list中,作为一个字段值来返回
SELECT
ename,job,sal
FROM
EMP
WHERE
deptno
in
(
SELECT
deptno
FROM
dept
WHERE
dname
LIKE
'A%');
(4)sqlselect子查询扩展阅读
在select子句里能支持直接嵌套一个select子查询,但是该select子查询返回的
结果集
必须是单行,返回多
行时
会提示ORA-01427:
single-row
subquery
returns
more
than
one
row(ORA-01427:
单行子查询返回多个行
):
select
(
SELECT
id
from
data_
dictionary
where
id=1)
From
v_photosum_attach
;
select
(
SELECT
id
from
data_dictionary
where
id=lock_purpost)
From
v_photosum_attach
;
注释:lock_purpost是表v_photosum_attach里的一列的列名。
参考资料来源:
搜狗网络
-子查询

Ⅳ SQL Server 之 子查询与嵌套查询

当由where子句指定的搜索条件指向另一张表时,就需要使用子查询或嵌套查询。

1 子查询

子查询是一个嵌套在select、insert、update或delete语句或其他子查询中的查询。任何允许使用表达式的地方都可以使用子查询。

1.1语法规则:

- 子查询的select查询使用圆括号括起来

- 不能包括compute或for browse子句

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

- 子查询最多嵌套32层,个别查询可能会不支持32层嵌套

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

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

1.2 语法格式:

- where 查询表达式 [not] in(子查询)

- where 查询表达式 比较运算符 [any|all] (子查询)

- where [not] exists (子查询)

2 嵌套查询

嵌套查询是指将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询。

嵌套查询中上层的查询块称为外侧查询或父查询,下层查询块称为内层查询或子查询。SQL语言允许多层嵌套,但是在子查询中不允许出现order by子句,order by子句只能用在最外层的查询中。

嵌套查询的处理方法是:先处理最内侧的子查询,然后一层一层地向上处理,直到最外层的查询块。

2.1 简单的嵌套查询

子查询的运算符含有=、<>、<、>、<=、>=

三个查询:

第一个:查询年纪>25的老师所教的学生

第二个:查询年纪>25的老师

第三个:验证查询到的学生信息

对比:当子查询中的分那会的结果不是一个时,父查询无法正常工作

2.2 带IN的嵌套查询

当子查询返回一系列值时,适合带IN的嵌套查询。

2.3 NOT IN

2.4 SOME

2.5 ANY

2.6 ALL

2.7 EXIST

Ⅵ SQL查询语句中,什么叫子查询

嵌套SELECT语句也叫子查询,一个
SELECT
语句的查询结果能够作为另一个语句的输入值。子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在select
list中,作为一个字段值来返回。
1、单行子查询
:单行子查询是指子查询的返回结果只有一行数据。当主查询语句的条件语句中引用子查询结果时可用单行比较符号(=,
>,
<,
>=,
<=,
<>)来进行比较。
例:
select
ename,deptno,sal
from
emp
where
deptno=(select
deptno
from
dept
where
loc='NEW
YORK');
2、多行子查询:多行子查询即是子查询的返回结果是多行数据。当主查询语句的条件语句中引用子查询结果时必须用多行比较符号(IN,ALL,ANY)来进行比较。其中,IN的含义是匹配子查询结果中的任一个值即可("IN"
操作符,能够测试某个值是否在一个列表中),ALL则必须要符合子查询的所有值才可,ANY要符合子查询结果的任何一个值即可。而且须注意ALL
和ANY
操作符不能单独使用,而只能与单行比较符(=、>、<
、>=
、<=
、<>)结合使用。
例:
1).多行子查询使用IN操作符号例子:查询选修了老师名叫Rona(假设唯一)的学生名字
sql>
select
stName

Ⅶ sql where嵌套select子查询

sql where嵌套select子查询
判定A表的数据是否存在B表,如果存在则显示存在,不存在则显示不存在
例如S#存在于SC表和student表中,判定s#是否都在student表中存在存在则显示存在,不存在则显示不存在,具体如下:
from student

select s#,
case when s# in(select s# from sc) then '存在'
when s# not in( select s# from sc) then '不存在'
end
from student