这是表格:
table A (
id integer primary key,
name varchar(20),
age integer
)
面试问题是:
编写查询以从表中返回唯一名称列表。
这是我的解决方案:
select id from A group by name;
我的问题:这是返回唯一名称列表的有效方法吗?
答案 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可能是您可以获得的最佳选择。获取列表没有概念。您可以使用与数据库链接的编程语言创建列表。