SELECT * FROM TABLE与SELECT DISTINCT * FROM TABLE的区别?
两个SELECT语句的区别及DISTINCT *的作用
这两个查询语句存在区别,并不等价,具体差异和DISTINCT *的作用如下:
SELECT * FROM TABLE:会返回表中的所有行,哪怕存在完全重复的整行数据(即每一列的值都一模一样的行),也会全部保留输出。SELECT DISTINCT * FROM TABLE:这里的DISTINCT作用于整行的所有列,它会遍历结果集,自动移除所有完全重复的行,只保留唯一的行。只有当两行的每一列值都完全相同时,才会被判定为重复行并去重。
举个实际例子:假设表中有以下数据
| id | name | age |
|---|---|---|
| 1 | 张三 | 20 |
| 1 | 张三 | 20 |
| 2 | 李四 | 22 |
用SELECT *会返回全部3行;而用SELECT DISTINCT *只会返回2行,重复的第一行被移除。
注意:如果表有主键(比如唯一的id列),主键会保证每行数据唯一,这时候两个语句的输出结果会一致,但这只是特殊情况,本质上两者的逻辑还是不同的。
内容的提问来源于stack exchange,提问作者Shahid Sarwar
相关产品推荐
相关产品推荐

