moon 子查询 SQL

子查询定义:在外部SQL语句内部使用SELECT语句,这条SELECT语句称为子查询

子查询类型:

单行子查询:对外部SQL要么不返回结果,要么只返回一行。单行子查询特殊情况:是这号查询一列,这种子查询被称为

“标量子查询”

多行子查询:向外部SQL语句返回一行或多行

而子查询又可以分为:

多列子查询:向外部SQL语句返回队列

关联子查询(correlated sbuquery):通过相同的列与外部的SQL语句相关联(引用外部SQL语句的一列或多列)

嵌套子查询:位于另一个子查询中

6.2 编写单行子查询(可放到where/ having/ from子句中)

1. 放到where子句中

select first_name ,last_name

from customers

where customer_id=

(select customer_id

from customers

where last_name="brown");

where子句中的这个子查询先执行,返回last_name="brown"行的id 再将之传给外部的where子句 再执行外部查询

使用其它操作符:<,<=,>,>=

例如

select product_id, name, price

form products

where prict>

(select avg(price)

from products)

2在having子句中使用子查询

having子句的作用:对行组进行过滤,在外部查询的having子句中使用子查询:having子句基于子查询返回

的结果对行组进行过滤

时间: 2024-11-09 05:51:14

moon 子查询 SQL的相关文章

分页用到的子查询sql语句

说明(2017-8-31 23:30:22): 1. 分页用到的子查询sql语句 2. 记住的意思就是背过^_^ 3. 还有一个top语句,查一查

优化子查询sql语句为内连接

背景: 希望提高查询的效率,从sql语句中频繁出现的子查询入手. 数据表如下:Student表中的CityCode对应于City表中的Code. Student表:                      City表: 子查询方式: sql语句如下: 1 select * from Student 2 where CityCode 3 in 4 (select Code from City) 内连接方式:sql语句如下: 1 select a.* from 2 Student a inner

一个复杂子查询SQL优化

select * from test.vmark vk where id in (select v.id from usr_center.vmark_degree_update_log v, (select min(id) id from usr_center.vmark_degree_update_log where degree_update_cause = 0 and degree_update_type = 0 group by user_id) log where v.id = log

ThinkPHP3.2 SQL alias 子查询

SELECT info_key, info_value, info_status, edit_time FROM (SELECT * FROM `detail` WHERE login = '[email protected]' ORDER BY edit_time DESC  ) AS aaa GROUP BY info_key 希望通过Thinkphp实现基于alias的子查询,终于参考下面这个文章实现了. http://www.thinkphp.cn/update/122.html 如下是

sql example 9 -- 子查询

sql example 9 – 子查询 sql example 9 – 子查询 数据库准备 create table student ( id int auto_increment primary key, name varchar(10) ); create table scores ( id int auto_increment PRIMARY key, score int default 0, foreign key (id) references student(id) on delet

Sql学习笔记4——嵌套子查询(下)

5)from子句中的子查询 因为SQL任何select-from-where表达式返回的都是关系,所以from子句中允许使用子查询表达式. 考虑查询“找出平均工资超过42000美元的那些系中教师的平均工资”,之前我们用having子句来书写该查询. 现在我们不用having子句,如下: select dept_name,avg_salary from(select dept_name,avg(salary) as avg_salary from instructor group by dept_

SQL 基础--&gt; 子查询

--========================= --SQL 基础--> 子查询 --========================= 一.子查询 子查询就是位于SELECT.UPDATE.或DELETE语句中内部的查询 二.子查询的分类 单行子查询 返回零行或一行 多行子查询 返回一行或多行 多列子查询 返回多列 相关子查询 引用外部SQL语句中的一列或多列 嵌套子查询 位于其它子查询中的查询 三.子查询语法 SQL> SELECT select_list FROM table WH

sql 异常&lt;除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。&gt;

问题:当子查询内存在ORDER BY 字句时查询会报错 SQL: SELECT * FROM ( SELECT * FROM USER ORDER BY USER_CORD ) S. 解决办法:在子查询SQL语句SELECT 后加 TOP 100 PERCENT (查询出前百分比为100的数据,也就是查询出全部数据) SQL: SELECT * FROM ( SELECT  TOP 100 PERCENT  * FROM USER ORDER BY USER_CORD ) S

SQL语句面试题目:一般查询和高级子查询

几个表 employees 表: EMPLOYEE_ID              NUMBER(6) FIRST_NAME                VARCHAR2(20) LAST_NAME                 VARCHAR2(25) EMAIL                               VARCHAR2(25) PHONE_NUMBER       VARCHAR2(20) HIRE_DATE                  DATE JOB_ID