是否必须将"distinct"字段作为查询中的第一个字段?

dai*_*isy 0 sqlite

只是出于好奇,看起来像一个distinct领域必须放在任何其他领域之前,我错了吗?

在SQLite中查看此示例,

sqlite> select ip, distinct code from parser; # syntax error?
Error: near "distinct": syntax error
sqlite> select distinct code, ip from parser; # works
Run Code Online (Sandbox Code Playgroud)

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

NPE*_*NPE 6

没有" distinct领域" 这样的东西.

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

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

select distinct
code,
ip
Run Code Online (Sandbox Code Playgroud)

而不是

select
distinct code,
ip
Run Code Online (Sandbox Code Playgroud)

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

不可能以distinct您尝试的方式应用于单个字段(group by可能是一个有用的替代方案,但我们需要了解您正在尝试实现的目标).