2013-08-20 38 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)**構建。 –

相關問題