SQL中Select Distinct的介绍及应用实例

125 阅读4分钟

Select Distinct的定义

在任何RDBMS数据库系统中,SQL选择区分是与选择语句一起使用的。Select distinct 是从表中检索所有唯一的记录。它将从表中消除所有重复的记录。假设我们的表包含更多的重复记录,当我们在查询中使用SQL选择一个独特的关键字时,我们想获取独特的记录。

选择独特的介绍

  • 在任何RDBMS系统中,从表中获取唯一记录是非常有用和重要的。
  • 在ANSI标准中,它被定义为RDBMS的官方关键字。正如我们所知,它是SQL选择语句的一个连接词。如果我们想避免表或列中的重复数据,那么我们就使用这个语句。
  • 我们可以在指定的列或指定的表中使用关键字。这个函数将从函数中删除重复的记录。它将在单列上工作。

Select Distinct 语句

  • 它不会在多列上起作用;我们可以在我们已经检索到唯一记录的表中的单列上使用同样的方法。
  • 我们可以将此语句与min、max、avg、count等聚合词一起使用。下面是select distinct语句的语法。

语法 -

Select DISTINCT name_of_column1, name_of_column2, …., name_of_columnN

从 name_of_table;

  • 选择DISTINCT name_of_column1, name_of_column2, ...., name_of_columnN
From name_of_table where condition;
  • 从name_of_table中选择DISTINCT name_of_column,按name_of_column排序。

下面是描述语法,如下所示:

  • 选择 - 这是一个从表中选择指定数据的SQL语句。我们可以根据查询中给出的条件选择数据。我们可以使用select与distinct语句从表中获取唯一记录。
  • 列1的名称到列N的名称 - 这是与distinct关键字一起使用的表列,用于从表中检索数据。假设我们使用了带有指定列的distinct语句,它将从表中检索出唯一的记录。
  • 表的名称 - 这是我们从中检索出唯一记录的表的名称。我们需要在使用语句时定义表名。
  • Where condition - 任何SQL语句中的where条件将被用来选择或检索我们在条件中定义的指定行。Where条件对于通过使用语句检索特定条件下的唯一行是非常有用的。
  • Order by - 这个条件用于按照指定的顺序来获取记录。默认的顺序条件是升序。假设我们已经给出了明确的条件,那么它将按照我们在查询中给出的指定顺序检索数据。
  • 当使用一个表达式时,我们的查询将通过使用distinct子句从表达式中返回唯一的值。
  • 假设我们定义了一个以上的表达式;我们的区别子句将返回表达式的唯一组合。
  • 通过使用该语句,我们不能忽略空值;在检索数据时,我们的结果将包含作为空值的独特值。
  • 在下面的例子中,我们可以看到sql select语句不会忽略指定列中的空值,我们在其中使用了distinct子句。
Select distinct id, name from sql_distinct;
  • 通过使用这个语句,我们可以避免数据的冗余。这个语句将消除重复数据的出现。
  • 下面的例子显示了语句关键字是区分大小写的。在第一个例子中,我们使用了大写字母的关键字,而在第二个例子中,我们使用了小写字母的关键字,两次都会返回相同的结果,不会产生任何错误。
select DISTINCT id, name from sql_distinct;
select distinct id, name from sql_distinct;

例子

  • 我们使用的是distinct数据库的sql_distinct表。我们正在使用Postgres数据库来观察sql select distinct的例子。下面是来自sql_distinct表的样本数据。
Select * from sql_distinct;
  • 在下面的例子中,我们已经从id列中找到了记录的唯一计数。我们可以看到id表的唯一记录数是4。
SELECT COUNT(DISTINCT id) FROM sql_distinct;
  • 在下面的例子中,我们从sql_distinct表中找到了不同的记录。同时,我们在id列上使用了order by子句,如下所示。
select distinct id, name from sql_distinct order by id;
  • 下面的例子显示了单列与sql select语句的使用。在下面的例子中,我们只使用了id列。
Select distinct id from sql_distinct;
  • 在下面的例子中,我们使用了两个带有order by子句的列名和sql select distinct语句。我们正在使用id,name列,如下所示。
Select distinct id, name from sql_distinct order by id, name;
  • 下面的例子显示了一个带有where条件的语句。我们通过使用sql select distinct语句对id和name列使用where条件。它将只从表中返回单个值。
Select distinct id from sql_distinct where id = 103 and name = 'PQR' order by id;
  • 下面的例子显示了表的所有列都是如下的。
Select distinct id, name from sql_distinct;

结论

select distinct将从表中消除所有重复的记录。它与任何RDBMS数据库系统中的选择语句一起使用。选择分明是为了从表中获取所有唯一的记录。我们可以在一个指定的列上使用SQL select distinct关键字。