Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql sql中select distinct id和select distinct*之间的差异_Mysql_Sql_Pyspark Sql - Fatal编程技术网

Mysql sql中select distinct id和select distinct*之间的差异

Mysql sql中select distinct id和select distinct*之间的差异,mysql,sql,pyspark-sql,Mysql,Sql,Pyspark Sql,我试过了 select distinct ID from DB.TABLE; 它在所有记录中返回唯一的ID select distinct * from DB.TABLE; 它将通过比较所有列和记录或distinct*的功能返回唯一的记录,我将distinct*的功能与distinct*的功能混淆distinct意味着结果集中没有重复的行,重复意味着所有列在两行中都具有相同的值。所以,是的,DISTINCT*表示选择所有列并跳过所有列中的值与某些已包含行匹配的任何行。在第一次查询中,

我试过了

select distinct ID  from  DB.TABLE;
它在所有记录中返回唯一的ID

select distinct *  from  DB.TABLE;

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

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

在第一次查询中,使用have have对表的主键使用DISTINCT,所以很明显,您得到了所有记录。为了更好地澄清,请使用另一个在表中不唯一的字段。

因为在For第一次查询中,您特别提到了一列,即ID,在您的情况下,它将返回一个不同ID的列表 但是,在第二查询的情况下,您选择了所有列以及ID。因此,现在SQL将标识所有列的组合之间的区别。例如,考虑这3个元组。 ID:01,col2:some,col2:one,ID:01,col2:some,col2:two,ID:02,col2:some,col2:two 选择不同的ID将给出01和02作为输出,因为它只考虑在这一情况下为01,01和02的ID。
但是在选择不同的情况下,将返回所有的三元组,因为ID:01,COL2:一些,COL2:一,ID:01,COL2:一些,COL2:两个是相同的,如果你考虑所有列的组成。< /P>选择不同的*使用所有列的元组来确定区别。它与选择不同的col1,col2。。对于表中的所有列:返回的结果列也将相应不同。也就是说,带有distinct的*实际上与select id与select*的区别相同。换句话说,distinct*没有任何意义。这是一个矛盾修饰法,如果表中只有Id列,那么就没有区别了;问题中没有这样的说法。这个答案很难理解。请把东西隔开并格式化代码。