请看一下一个查询的问题
我有两张表
tab1
字段
aID
bID
tab2
字段
aID
bID
tab1中有记录:
aID bID
as1 19
as2 19
as3 23
as4 45
tab2中有记录:
aID bID
as2 19
as3 19
as4 19
现在需要查找出两张表中bID相等的且bID=19的记录,应该是5条记录
我用的方法是:
方法1:select tab1.aID,tab2.aID from tab1,tab2 where tab1.bID=tab2.bID and tab2.bID=19
方法2:select tab1.aID,tab2.aID from tab1 join tab2 on tab1.bID=tab2.bID where tab1.bID=19
上面两中方法选出的记录都是6条,为什么出这样的问题,应该怎么做呢?
---------------------------------------------------------------
select * form tab1 where bID=19
union all
select * form tab2 where bID=19
---------------------------------------------------------------
create table tab1
(aID char(10),
bID char(10))
go
insert into tab1(aid,bid) values('as1','19')
insert tab1 values('as2','19')
insert tab1 values('as3','38')
insert tab1 values('as4','45')
go
create table tab2
(aID char(10),
bID char(10))
go
go
insert tab2 values('as2','19')
insert tab2 values('as3','19')
insert tab2 values('as4','19')
go
select * from tab1
select * from tab1 where tab1.bid='19'union all select * from tab2 where tab2.bid='19'
斑竹加的话:
1、join 产生的是笛卡尔积。
2、union 会排除重复的记录
3、union all 不会排除重复的记录
union子句
union操作符将两个查询结果合并为一个结果集。为连接查询合并两个表时:列的数日和顺序在查中必须一致;数据类型兼容
语法:
select
语句
union
[
all
]
select
语句
注意:
1
.union运算从最终结果集中删除重复记录,如想不删除重复记录使用all关键字
2
.第一个select语句中不能用order by或compute子句,只能是最后一个select语名后用
例:查询计算机系的学生式年龄不大于19岁的学习,按年龄倒排序
select
*
from
department
where
dept
=
'
computer
'
;
union
;
select
*
from
student
where
age
<=
19
order
by
age
desc
分享到:
相关推荐
UNION ALL 用于合并两个或多个 SELECT 语句的结果集,使用方法是将每个 SELECT 语句用 UNION ALL 连接起来。例如: ```sql SELECT 'china' AS col_1, 'america' AS col_2, 'canada' AS col_3, -1 AS status FROM ...
### SQL利用UNION ALL进行行转列方法解析 在数据库操作中,经常需要对数据进行各种转换以满足不同的业务需求。其中,“行转列”(Pivot)是一种常见的数据转换方式,它能够将数据表中的某列或多列值转换为多列的...
### SQL语句 UNION 和 UNION ALL 使用详解 #### 一、SQL UNION 和 UNION ALL 的基本概念 **UNION** 和 **UNION ALL** 是 SQL 语言中用于合并两个或多个 SELECT 语句结果集的关键字。这两种操作符都可以帮助我们...
MySQL UNION 与 UNION ALL 语法与用法 MySQL UNION 语法用于把来自多个 SELECT 语句的结果组合到一个结果集合中。其语法格式为:SELECT column,... FROM table1 UNION[ALL] SELECT column,... FROM table2...其中,...
#### UNION ALL 的使用方法 `UNION ALL`的基本语法格式如下: ```sql (SELECT column_name(s) FROM table1) UNION ALL (SELECT column_name(s) FROM table2); ``` 这里的关键在于两个`SELECT`语句必须拥有相同...
在SQL查询中,`UNION` 和 `UNION ALL` 是两种用于合并多个SELECT语句结果集的方法,它们之间的主要区别在于数据去重处理和性能优化。了解这些概念对于优化SQL查询性能和满足特定的业务需求至关重要。 1. **UNION**...
SELECT ... UNION ALL SELECT C.TRD_NO FROM XXXXXXXXX C WHERE C.CLIENT_CD = W_IN_CLIENT_CD ) D WHERE A.TRD_NO = D.TRD_NO AND A.CLIENT_CD = W_IN_CLIENT_CD AND A.RESULT IS NULL ;
在SQL中,`UNION`和`UNION ALL`是用来合并多个查询结果的两种方法,它们主要用于处理来自不同数据表的数据。尽管它们的功能相似,但它们在处理重复数据时的行为有所不同。 首先,让我们来理解`UNION`。`UNION`操作...
另一种方法是使用`UNION ALL`将两个查询合并为一个,根据`@Flag`过滤结果。 ```sql SELECT * FROM dbo.A WHERE @Flag = 0 UNION ALL SELECT * FROM dbo.B WHERE @Flag = 1 ``` 乍看之下,`UNION ALL`方法似乎...
理解这两种操作符的使用方法可以帮助你更有效地构建和优化SQL查询。 首先,`UNION`操作符的基本功能是合并两个或更多SELECT语句的结果,但只保留不重复的行。这意味着如果你有两个或多个表的数据源,`UNION`将去除...
在SQL查询中,`UNION` 和 `UNION ALL` 是两种用于合并多个查询结果集的方法,它们在处理数据集合时具有重要的作用。本篇文章将详细介绍这两种操作符的使用及它们之间的区别。 首先,让我们来看一下 `UNION`。`UNION...
本文将深入探讨这两种操作符的使用方法及其性能差异。 首先,`UNION` 操作符用于合并两个或多个`SELECT`语句的结果,并自动去除重复的行。这意味着,当你使用`UNION`时,最终返回的结果集中不会有重复的记录。例如...
在Oracle数据库中,`UNION` 和 `UNION ALL` 是两种用于合并多个查询结果集的方法,主要应用于多表查询。这两个操作符在处理数据时有着显著的区别。 1. **UNION 操作符** `UNION` 用于合并两个或多个`SELECT`语句的...
在数据库查询中,`UNION` 和 `UNION ALL` 是两种用于合并多个查询结果集的方法,它们在处理数据合并时具有不同的行为和性能特点。 首先,`UNION` 操作符用于合并两个或更多 `SELECT` 查询的结果,并且会自动去除...
如果不需要去除重复行,使用`UNION ALL`比`UNION`更有效率,因为它跳过了去重步骤。 在这个例子中,为了满足新的排序需求,我们需要分别处理每个状态,然后再将它们组合起来。我们为每个状态创建一个子查询,每个子...
总结以上内容,本文主要讲述了MySQL中UNION ALL用法的基本概念、在不同版本的MySQL中UNION ALL的性能差异,以及如何通过理解执行计划来优化数据库操作。此外,还提到了与MariaDB的对比以及OCR扫描技术可能带来的问题...
在使用 `UNION` 或 `UNION ALL` 时,有时需要结合其他子句,如 `ORDER BY` 和 `LIMIT` 来控制结果的排序和限制返回的行数。在这种情况下,应该将这些子句放在最后一个 `SELECT` 语句之后,并将整个 `UNION` 语句用...