sql中分组查询和子查询_SQL中的子查询

本文详细介绍了SQL中子查询的使用方法,包括将子查询视为记录源或单个值,以及如何在不同SQL语句中应用子查询。通过具体示例,展示了在IN()命令、FROM子句及比较操作符中使用子查询的技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sql中分组查询和子查询

要在SQL中使用子查询(SQ),有两种方法:

  1. 将SQ视为记录源(如表)。
  2. 将SQ视为单个值。
无论哪种情况,SQ都是一个简单的SELECT查询,但用括号()包围。

在情况1中,SQ应该位于FROM子句中,或者有时可能放在In()命令中。

在情况2中,可以使用SQ代替其他任何返回值的项目(SELECT; WHERE; HAVING; GROUP BY;等等)。

假定以下结构:

 Table Name=tblOKData 
ID; Autonumber; PK
Name; String
有记录:
1   Bat
2   Ball
3   Racquet
 Table Name=tblALLData 
ID; Autonumber; PK
Name; String
有记录:
1   Glass
2   Cup
3   Plate
21  Bat
22  Ball
23  Racquet
在In()中使用SQ。

假设我们要显示名称与tblOKData表中找到的名称匹配的所有项目的tblAllData.ID。 在这种情况下,我们可以使用INNER JOIN,但是(可以在此处说明这一点)可以使用SQ进行。

该代码将是:

SELECT ID
FROM tblAllData
WHERE Name In(SELECT [Name]
              FROM tblOKData)
在FROM子句中使用SQ作为记录集。

最简单的形式是用括号将基本的SELECT查询括起来并重命名(AS {Name})。

在这种情况下,我们希望获得与上述SQL相同的效果。

该代码将是:

SELECT subQ.ID
FROM (SELECT *
      FROM tblAllData) AS subQ INNER JOIN tblOKData
  ON subQ.Name = tblOKData.Name
使用SQ作为简单值。

我们要选择所有大于这些ID平均值的tblAllData.ID。

该代码将是:

SELECT [ID]
FROM tblAllData
WHERE [ID]>(SELECT Avg([ID])
            FROM tblAllData)
附加的文件
文件类型:zip SubQueries.Zip (8.6 KB,678视图)

翻译自: https://bytes.com/topic/access/insights/593611-subqueries-sql

sql中分组查询和子查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值