不同的功能以某种方式不返回所有类型

Distinct function somehow not giving back all types

随时查看我的最新项目:http://arda-maps.org:2480 arda arda 作为登录名。

现在检查select distinct(type) from Location

这里有 8 条记录(River,Lake,Region,City,Island,House,Mountain,Hill)。但其实还有很多...

为了向您展示 distinct 并没有返回所有 distinct,我们搜索具有另一种类型的特定顶点:

select * from Location where name = "Citadel of Gondor"

我是不是用错了distinct。或者结果列表不完整的原因是什么?

奇怪。但如果你尝试:

select distinct(type) from Location limit -1

您将拥有全部 64 个不同的入口。

确实,查询部分在结果集中的应用顺序不是很明显。您输入了:

select distinct(type) from Location

东方工作室应用 limit 20(除非您更改它或在查询中包含不同的限制)。所以最终运行的查询是

select distinct(type) from Location limit 20

现在,这可能意味着两者之一:

  1. 最多找到 20 个位置并给我它们的不同类型
  2. 最多找到 20 个不同类型的所有位置

显然,您所期望的是第 2 个,而发生的是第 1 个。解决方案是使用内部查询,这样 limit 将显式应用于外部查询:

select from (select distinct(type) from Location) limit 20

这下说得很清楚了,给我找所有位置的不同类型,return我最多20个(和(2)一样)