在SQL中选择独特ID和选择独特*之间的区别

时间:2018-07-25 06:32:53

标签: mysql sql pyspark-sql

我尝试过

select distinct ID  from  DB.TABLE;

它在所有记录中返回唯一的ID。

select distinct *  from  DB.TABLE;

它将通过比较所有列和记录或“ distinct *”的功能来返回唯一记录,我将其与“ *”的功能相混淆。

3 个答案:

答案 0 :(得分:0)

DISTINCT表示结果集中将没有重复的行,重复意味着两列中的所有列都具有相同的值。所以是的,DISTINCT *的意思是“选择所有列,并跳过所有列中的值与某些已经包含的行相匹配的行”。

答案 1 :(得分:0)

在第一个查询中,使用在表的主键上使用了distinct,因此很明显您已获得所有记录。为了更好地进行说明,请使用表中并非唯一的另一个字段。

答案 2 :(得分:0)

由于在第一次查询中,您特别提到了一个列,即您的情况下的ID,它将为您返回不同ID的列表 但是在第二次查询的情况下,您选择了所有列以及ID。因此,现在sql会在所有列的组合中标识区别。例如,考虑这三个元组 (ID:01,col2:“一些”,col2:“一个”),(ID:01,col2:“一些”,col2:“两个”),(ID:02,col2:“一些”,col2:“二”) 选择唯一ID将给出01和02作为输出,因为在这种情况下,它仅考虑ID为01,01和02 但是在选择非重复*的情况下,将返回所有三个元组,因为(ID:01,col2:“ some”,col2:“ one ”),(ID:01,col2:“ some如果考虑所有列的组成,“,col2:” 两个“)是不相同的。