2016-06-08 123 views
-2

当执行SQL查询,我一直在试图找出如下: 在这个例子中:DISTINCT一个简单的SQL查询

SELECT DISTINCT AL.id, AL.name 
FROM albums AL 

为什么有需要指定不同?我认为Id是主键足以避免重复的结果。

+2

如果'ID'是一个主键,那么'DISTINCT'是没有意义的。 – Siyual

+1

1.我没有降低你的问题。 2.如果一个列在'SELECT'集合中自然是唯一的,那么提供'DISTINCT'不会改变结果。 – Siyual

回答

1

当您指定distinct时,您指定希望整行不同。例如,如果你有两行:

  1. ID = 1和Name = '张三'
  2. ID = 2,名称= '张三'

那么你的查询将返回两行,因为不同的ID值使行不同。

但是,如果您选择只有 ID列(并且它是您的主键),则区别是毫无意义的。

如果你想找到的所有独特的名字,那么你会想:

SELECT DISTINCT AL.name 
FROM albums AL 
1

你是对的,在你的情况下,应该不需要不同的词,因为你要求的是id和名字。现在,为了清楚的例子,有必要使用不同的名称,比如说你有多个具有相同名称的id。 Let It Be是披头士乐队和替换乐队的专辑。假设您使用数据库来写出只包含相册名称的标签。你会想要的查询将是:

select distinct al.name 
    from albums al; 

有时你的数据库是不完美的,它结束了一堆垃圾数据。如果该ID没有被指定为唯一,那么最终可能会出现重复记录,然后您可能希望避免在查询结果中看到重复项。