distinct与union
时间: 2023-09-09 07:08:35 浏览: 48
distinct和union是SQL语言中的两个关键词。
distinct用于查询结果去重,即返回结果集中不重复的记录。例如,假设有一个名为table1的表,其中有一个列col1包含重复的值,要查询不重复的col1值,可以使用以下语句:
```
SELECT DISTINCT col1 FROM table1;
```
union用于合并两个或多个查询结果集。例如,假设有两个名为table1和table2的表,它们都包含一个名为col1的列,要查询这两个表中所有不重复的col1值,可以使用以下语句:
```
SELECT col1 FROM table1
UNION
SELECT col1 FROM table2;
```
这将返回一个包含table1和table2中不重复的col1值的结果集。注意,union会自动去重,如果想返回重复的记录,可以使用union all。
相关问题
union all后distinct 和union
distinct的作用是去除查询结果中的重复记录,而union all则是将多个查询结果合并在一起,不去除重复记录。在使用union all后再使用distinct,相当于先将多个查询结果合并,然后再去除其中的重复记录。这样做的效率相对较低,因为需要对合并后的结果进行排序。而使用exists代替distinct可以避免排序,提高查询效率。所以在多表查询时,建议使用union all代替union,并使用exists代替distinct。[1][2]
举个例子来说明,假设有两个表TABLE_R和TABLE_BAL,它们的结构相同,都包含ACNO、DAT、LOGACNO、SENO和PROVICEID这几个字段。如果我们想要查询这两个表中的所有记录,并去除重复记录,可以使用以下语句:
SELECT DISTINCT * FROM (
SELECT trim(ACNO) as ACNO, DAT, LOGACNO, SENO, PROVICEID FROM TABLE_R
UNION ALL
SELECT trim(ACNO) as ACNO, DAT, LOGACNO, SENO, PROVICEID FROM TABLE_BAL
)
这样的查询会先将两个表的记录合并,然后再去除重复记录。但是这个查询的效率相对较低,因为需要对合并后的结果进行排序。而如果我们使用exists代替distinct,可以提高查询效率:
SELECT * FROM TABLE_R R
WHERE EXISTS (
SELECT 1 FROM TABLE_BAL B
WHERE trim(B.ACNO) = trim(R.ACNO)
AND B.DAT = R.DAT
AND B.LOGACNO = R.LOGACNO
AND B.SENO = R.SENO
AND B.PROVICEID = R.PROVICEID
)
这样的查询不需要进行排序,效率较高。所以在多表查询时,使用exists代替distinct可以提高查询效率。[3]
union和union all + distinct哪个快
根据提供的引用内容,可以得知UNION和UNION ALL的区别在于前者会去重,后者不会。因此,如果需要去重,使用UNION;如果不需要去重,使用UNION ALL会更快一些,因为不需要进行去重操作。
以下是一个演示:
假设有两个表,每个表有10000条记录,我们将它们合并成一个新表,比较使用UNION和UNION ALL的速度。
```sql
-- 使用UNION
SELECT * INTO new_table FROM table1
UNION
SELECT * FROM table2;
-- 使用UNION ALL
SELECT * INTO new_table FROM table1
UNION ALL
SELECT * FROM table2;
```
通过对比可以发现,使用UNION ALL的速度要比使用UNION快很多,因为不需要进行去重操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)