编写查询以从表中返回唯一名称列表

时间:2011-08-29 17:15:33

标签: sql

这是表格:

table A (
 id    integer       primary key,
 name  varchar(20),
 age   integer
)

面试问题是:

编写查询以从表中返回唯一名称列表。

这是我的解决方案:

select id from A group by name;

我的问题:这是返回唯一名称列表的有效方法吗?

3 个答案:

答案 0 :(得分:1)

不,因为您要返回ID,而不是名称。该查询甚至不能在许多DBMS中工作,因为所选列必须位于group by子句中或具有聚合函数(如max()sum()等),以应用于它们。

你需要:

select name from a group by name

如果name列已编入索引,通常甚至更多效率。

另一种常见的做法是:

select distinct name from a

答案 1 :(得分:0)

我会选择

SELECT DISTINCT name FROM A

SELECT name FROM A GROUP BY name

两者都很好理解。至于哪一个更快,可能取决于所讨论的RDBMS。

答案 2 :(得分:0)

选择明显名称FROM A可能是您可以获得的最佳选择。获取列表没有概念。您可以使用与数据库链接的编程语言创建列表。