SQL语法:仅在超过X结果时选择

我有一个称为测量的测量表.该表有一列用于位置,第二列用于相应的值(示例简化).

该表看起来像(注意loc1的2个条目):

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

我现在想要制定一个SQL查询(实际上我使用的是sqlite),它只返回表的前两行(即loc value1和loc1 value2),因为这个位置在这个表中有多个条目.

文字公式将是:向我显示位置的行,这些行在整个表中不止一次出现
pseudcode:

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

感谢帮助!

解决方法

你是正确的使用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 Fiddle

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...