SQL UNION和UNIONALL 区别

union  并联select 查询的结果集  并去重

union all 并联select 查询的结果集  不去重

例子:

-- 假设有两个表 t1 和 t2,它们结构相同,包含 id 和 name 两列
-- 要查询这两个表中的所有记录,并将结果按照 id 升序排列

-- 使用 UNION 去重
SELECT id, name FROM t1
UNION
SELECT id, name FROM t2
ORDER BY id ASC;

-- 使用 UNION ALL 不去重
SELECT id, name FROM t1
UNION ALL
SELECT id, name FROM t2
ORDER BY id ASC;

使用 UNION 合并两个或多个表的结果集时,需要注意以下几点:

  1. UNION 要求每个 SELECT 语句返回的列数必须相等,并且对应位置的列数据类型必须兼容,否则会导致合并失败。
  2. UNION 会自动去重,即每个结果集只会出现一次。如果需要保留重复的记录,可以选择使用 UNION ALL
  3. UNION 的执行效率较低,因为它需要对每个 SELECT 语句的结果集进行去重和排序操作。如果数据量较大,建议使用其他方式来代替 UNION 操作。

SELECT DISTINCT * FROM t 这条 SQL 语句的含义为从表 t 中选取所有不同的行。其中的 DISTINCT 关键字用于去除重复的记录行,而 * 表示返回所有列。

举个例子,假设有一张名为 students 的表,包含以下记录:

idnameagegender
1Tom18Male
2Mary20Female
3Tom18Male

如果我们执行以下 SQL 语句:

SELECT DISTINCT * FROM students;

则查询结果将会是:

idnameagegender
1Tom18Male
2Mary20Female

在这里,DISTINCT 关键字去掉了重复的记录行(即第一行和第三行),返回了不同的记录行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值