sql 子查询 嵌套查询_SQL子查询– SQL中的嵌套查询

sql 子查询 嵌套查询

In the real world, there are times when we need a particular set of data but we don’t have the exact details for getting the data set. In such cases, we try to get the information from the available set of information that we have. To achieve such target we use SQL subquery.

在现实世界中,有时候我们需要特定的数据集,但是我们没有获取数据集的确切细节。 在这种情况下,我们尝试从现有的可用信息集中获取信息。 为了实现这样的目标,我们使用SQL子查询。

SQL子查询 (SQL Subquery)

SQL subquery is a query nested inside another query. Most of the subqueries are used with WHERE clause of a query.

SQL子查询是嵌套在另一个查询中的查询。 大多数子查询与查询的WHERE子句一起使用。

SQL子查询规则 (SQL Subquery Rules)

  • A Subquery can be used with different SQL clauses like WHERE clause, HAVING clause and FROM clause.

    子查询可以与不同SQL子句(如WHERE子句,HAVING子句和FROM子句)一起使用。
  • Subqueries can be used with SELECT, UPDATE, INSERT and DELETE statements also.

    子查询也可以与SELECTUPDATEINSERTDELETE语句一起使用。
  • The order of execution starts from subquery first then the main query.

    执行顺序从子查询开始,然后是主查询。
  • The Subquery must be enclosed in parentheses.

    子查询必须用括号括起来。
  • An ORDER BY command cannot be used in a subquery, even though the main query can use an ORDER BY. The GROUP BY command can be used to perform the same function as the ORDER BY in a subquery.

    一个借命令命令不能在子查询中使用,即使主查询就可以使用ORDER BY。 GROUP BY命令可用于执行与子查询中的ORDER BY相同的功能。
  • When a subquery is used along with a comparison operator it should be on the right side of the comparison operator.

    当子查询与比较运算符一起使用时,它应位于比较运算符的右侧。

SQL子查询语法 (SQL Subquery Syntax)

SELECT column_name FROM table_name 
WHERE column_name OPERATOR (SELECT column_name FROM table_name WHERE condition);

The query inside the parenthesis after the OPERATOR is the subquery and the query outside the parenthesis is the main query.

OPERATOR之后在圆括号内的查询是子查询,而在圆括号外的查询是主查询。

SQL子查询示例 (SQL Subquery Example)

Let us consider the following two tables in order to understand Subquery in a better way.

让我们考虑以下两个表,以便更好地理解子查询。

Student

学生

Roll NoNameAgeGender
1Amit12M
2John13M
3Diana14F
4Henry15M
卷号 名称 年龄 性别
1个 阿米特 12 中号
2 约翰 13 中号
3 戴安娜 14 F
4 亨利 15 中号

Class

ClassSectionRoll No
6A1
7A2
8A3
9B4
部分 卷号
6 一个 1个
7 一个 2
8 一个 3
9 4

Please find below the MySQL queries to create the tables and insert the data.

请在下面MySQL查询中查找以创建表并插入数据。

CREATE TABLE `student` (
  `RollNo` INT NOT NULL,
  `Name` VARCHAR(45) NULL,
  `Age` INT NULL,
  `Gender` VARCHAR(45) NULL,
  PRIMARY KEY (`RollNo`));
  
  
  CREATE TABLE `class` (
  `ClassNo` INT NOT NULL,
  `Section` VARCHAR(45) NULL,
  `RollNo` INT NULL,
  PRIMARY KEY (`ClassNo`));
  
  
  INSERT INTO `student` (`RollNo`, `Name`, `Age`, `Gender`)
VALUES
	(1, 'Amit', 12, 'M'),
	(2, 'John', 13, 'M'),
	(3, 'Diana', 14, 'F'),
    (4,'Henry', 15,'M');
	
	 INSERT INTO `class` (`ClassNo`, `Section`, `RollNo`)
VALUES
	(6, 'A', 1),
	(7, 'A', 2),
	(8, 'A', 3),
    (9,'B', 4);

Let us try to look into some examples using SQL subqueries.

让我们尝试研究一些使用SQL子查询的示例。

  1. SQL subquery for getting all the student’s name with section ‘A’

    SQL子查询,用于获取“ A”部分的所有学生姓名
  2. SELECT Name FROM student 
    WHERE RollNo IN (SELECT RollNo FROM class WHERE section = 'A')
    Name
    Amit
    John
    Diana
    名称
    阿米特
    约翰
    戴安娜
    SQL nested query example

    SQL SubQuery with IN operator

    带IN运算符SQL SubQuery

  3. SQL subquery with class greater than 7

    类大于7SQL子查询
  4. SELECT * FROM student 
    WHERE RollNo IN (SELECT RollNo FROM class WHERE ClassNo>7)
    RollNoNameAgeGender
    3Diana14F
    4Henry15M
    卷号 名称 年龄 性别
    3 戴安娜 14 F
    4 亨利 15 中号
SQL Subquery with where clause

SQL subquery with Greater than operator

具有大于运算符SQL子查询

翻译自: https://www.journaldev.com/23945/sql-subquery-nested-query-sql

sql 子查询 嵌套查询

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值