一个我写的实例:其中多表连接,一共连接了3个表。使用聚集函数SUM,用到了GROUP BY
SELECT a.[UserID],b.[Name],sum (c.[Money]+c.[Bank])as TotalMoney
FROM Table1 a(nolock)
LEFT JOIN Table2 b(nolock) on a.[UserID] = b.[UserID]
LEFT JOIN Table3 c(nolock) ON b.[UserID]=c.[UserID]
WHERE a.[UserID] = b.[UserID] and a.[UserID] = c.[UserID] and a.[Time] >= '2005-01-01' AND a.[Time] <= '2006-12-31'
GROUP BY a.[UserID],b.[Name]
ORDER BY a.[Time] DESC
优化一下
SELECT a.[UserID],b.[Name],sum (c.[Money]+c.[Bank])as TotalMoney
FROM Table1 a(nolock)
LEFT JOIN Table3 c(nolock) ON a.[UserID]=c.[UserID], Table2 b(nolock)
WHERE a.[UserID] = b.[UserID] and a.[Time] >= '2005-01-01' AND a.[Time] <= '2006-12-31'
GROUP BY a.[UserID],b.[Name]
ORDER BY a.[Time] DESC
================================================================================
Left Join 语法:
select * from
table1 left join table2 on 条件1
left join table3 on 条件2
left join table4 on 条件3
where 条件4
GROUP BY 说明:
group by
在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。
在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数
select max(sal),job emp group by job;
(注意max(sal),job的job并非一定要出现,但有意义)
查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。
select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;
当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。
查询每个部门的每种职位的雇员数
select deptno,job,count(*) from emp group by deptno,job;
分享到:
相关推荐
SQL 外链接操作小结 inner join left join right join ...外链接操作是关系型数据库管理系统中的一种基本操作,用于从多个表中检索数据。它可以用于实现多种业务逻辑,例如数据更新、数据插入、数据查询等。
在C#编程中,进行多表链接查询是数据库操作中常见的任务,特别是在处理复杂的数据关系时。本主题主要探讨如何使用C#与SQL Server或其他支持SQL的数据库进行多表连接查询,以及如何设置多条件查询。 首先,我们需要...
在数据库查询中,连接(JOIN)用于合并两个或更多表的数据。左链接返回左表的所有记录,即使在右表中没有匹配的记录。如果左表的一个记录在右表中没有匹配,结果集将包含NULL值。这在你需要保留完整左侧数据的情况下...
在Django的ORM(对象关系映射)中,当我们使用ForeignKey来创建两个表之间的链接时,它实际上是在模拟SQL数据库中的JOIN操作。特别是,当需要实现类似SQL中的LEFT JOIN操作时,Django的ForeignKey可以帮助我们实现。...
在SQL查询中,连接操作是将两个或多个表的数据结合在一起的关键部分,这对于数据分析和信息检索至关重要。在众多的连接类型中,左连接(LEFT JOIN)和右连接(RIGHT JOIN)是两种常用的外连接方式,它们允许我们处理...
本篇文章将深入探讨如何使用链接查询(JOIN)和子查询来实现多表查询,以满足不同场景下的数据检索需求。 首先,我们要理解的是链接查询。在上述例子中,我们有两张表:`department`(部门表)和`employee`(员工表...
在多表关联中,可以创建多个TDataSource,一个对应于每个数据表,然后在它们之间建立链接。 7. **数据绑定**:Delphi的数据绑定机制使得界面上的控件可以直接显示和编辑TDataSet中的数据。在多表关联的情况下,通过...
Oracle左连接返回多条记录中一条记录的查询语句,更具指定条件分组排序,返回各组中第一条记录
本文实例讲述了thinkPHP5框架实现多数据库连接,跨数据连接查询操作。分享给大家供大家参考,具体如下: 1. 多数据库连接 方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为...
在MySQL数据库中,多表链接查询是常见的操作,特别是在处理复杂的数据分析和报表生成时。然而,当数据量达到百万级别甚至更大时,不合理的多表查询可能导致性能急剧下降。因此,掌握多表查询的核心优化策略至关重要...
Siebel支持多种类型的Join,包括INNER JOIN(只返回两个表中匹配的行)、LEFT JOIN(返回左表的所有行,即使右表没有匹配项)等。有效的Join配置能提高查询效率,减少不必要的数据传输,从而优化系统性能。 3. **...
- **左外连接(LEFT OUTER JOIN)**:除了返回符合连接条件的行,还会返回左表中不符合连接条件但符合条件的数据行。 - **右外连接(RIGHT OUTER JOIN)**:除了返回符合连接条件的行,还会返回右表中不符合连接条件...
在Access数据库中,可以通过SQL(结构化查询语言)来实现多表联接查询,例如INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN等。这些JOIN操作允许我们根据共同的字段将多个表的数据合并在一起,以获取更全面的信息。 ...
本章节主要讲解了在MySQL中使用JOIN进行多表查询的方法,特别是LEFT JOIN和JOIN(通常指的是INNER JOIN)的区别。LEFT JOIN返回左表格的所有记录,即使在右表格中没有匹配的记录,而未匹配的记录的字段值将显示为...
在数据库查询中,连接(Join)是一种非常重要的操作,用于合并两个或多个表中的数据。本文将详细介绍三种主要的连接类型:**内连接(Inner Join)**、**左连接(Left Join)**、**右连接(Right Join)**。通过具体...
- 当涉及到多表时,可以使用别名简化查询,如`as 名字`。 接着,我们讨论表链接,它允许从多个表中提取数据并合并成一个单一的结果集,但不同于UNION,它不会消除重复行。 1. **交叉连接(Cross Join)**:交叉...
最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)、SQL LEFT JOIN、SQL RIGHT JOIN、SQL FULL JOIN,其中前一种是内连接,后三种是外链接。 假设我们有两张表,Table A是左边的表,Table B是右边的表。 id ...