2013-08-20 37 views
0

只是出于好奇,看起来像一个distinct领域必须放在任何其他领域之前,我错了吗?是否必须将“独特”字段作为查询中的第一个字段?

见SQLite的这个例子中,

sqlite> select ip, distinct code from parser; # syntax error? 
Error: near "distinct": syntax error 
sqlite> select distinct code, ip from parser; # works 

这是为什么?我真的有语法错误吗?

回答

6

没有这样的东西作为“distinct字段”。

distinct适用于查询中的所有字段,因此必须在select之后立即出现。

换句话说,select distinct code, ip真的

select distinct 
code, 
ip 

而非

select 
distinct code, 
ip 

它选择所有不同对(code, ip)。因此结果集可以包括重复值code(每个具有不同的值ip)。

无法将distinct应用于您试图使用的单个字段(group by可能是一种有用的替代方法,但我们需要了解您正在尝试实现的内容)。

+0

是的,只有Postgres(除了通常的'DISTINCT'修饰符)还有一个** ['DISTINCT ON(表达式)'](http://www.postgresql.org/docs/9.2/static/sql-select .html#SQL-DISTINCT)**构建。 –

相关问题