微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL语法:仅当结果超过X个时才选择

如何解决SQL语法:仅当结果超过X个时才选择

您是正确的使用者HAVING,并考虑使用自联接…只是让操作顺序稍微偏离了一点…

select m1.location, m1.value
from measures m1
join (
  select location
  from measures
  group by location
  having count(*) > 1
) m2 on m2.location = m1.location

子选择将获取所有具有多个条目的位置…,然后将其再次连接到表中以获取完整结果。

SQL小提琴

解决方法

我有一张带有度量的表格,称为 measures 。该表的第一列表示 位置 ,第二列表示对应的 (示例已简化)。

该表如下所示(请注意 loc1的 2个条目):

location | value
-----------------
loc1     | value1
loc1     | value2
loc2     | value3
loc3     | value4
loc4     | value5

我现在想制定一个SQL查询(实际上我使用sqlite),该查询仅返回表的前两行(即loc + value1和loc1 +
value2),因为此位置在该表中有多个条目。

伪文本的表达方式是:向我显示位置的行,这些行在整个表的
伪代码中多次出现:

SELECT * from measures WHERE COUNT(location over the whole table) > 1

该解决方案可能真的很简单,但是以某种方式我似乎并没有破解。

我到目前为止所拥有的是一条SELECT语句,该语句返回具有多个条目的位置。下一步,我将需要与该查询返回的位置相对应的所有行:

SELECT location FROM measures GROUP BY location HAVING count(*) > 1

因此,下一步我尝试对同一张表进行JOIN并合并上述查询,但结果不正确。我这样尝试过,但这是错误的:

select t1.location,t1.value
from 
     measures as t1
     join 
     measures as t2 on t1.location = t2.location 
group by
      t2.location 
having count(*) > 1

帮助表示赞赏!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。