如何从没有密钥的表中检索非重复记录?

时间:2016-08-21 13:13:08

标签: sql database oracle database-design

我正在使用Oracle上的数据库,我有一个表,它不包含任何主键,外键或任何类型的键,但它有一个包含不同值的列。这些值在许多记录中重复,我希望SQL查询检索记录但不超过一次。这是表格:

姓名

迈克尔法拉第

斯蒂芬霍金

迈克尔法拉第

罗伯特胡克

迈克尔法拉第

Nikola Tesla

Nikola Tesla

斯蒂芬霍金

Thomas Edison

Abdus Salam

斯蒂芬霍金

迈克尔法拉第

Alan Turing

罗伯特胡克

阿尔伯特爱因斯坦

Nikola Tesla

2 个答案:

答案 0 :(得分:4)

尝试从TABLENAME中选择DISTINCT名称

答案 1 :(得分:0)

有两种选择。即使输出相同,性能实际上也可能因数据量和您使用的数据库类型而异。

如果您有大数据集,请尝试使用两种方法来查看哪种方法效果最佳。

选项#1

SELECT DISTINCT column_name
FROM   table_name

选项#2

SELECT column_name
FROM table_name
GROUP BY column_name

此外,在这种情况下,您可能希望对结果进行排序。通常,在数据库服务器上处理排序比在客户端执行排序更有效。您应该添加ORDER BY子句来获取它。

见下面的例子:

选项#1

SELECT DISTINCT column_name
FROM table_name
ORDER BY column_name;

选项#2

SELECT column_name
FROM table_name
GROUP BY column_name
ORDER BY column_name;