SQL语法:仅在超过X结果时选择
发布时间:2020-12-12 07:47:30 所属栏目:MsSql教程 来源:网络整理
导读:我有一个称为测量的测量表.该表有一列用于位置,第二列用于相应的值(示例简化). 该表看起来像(注意loc1的2个条目): location | value-----------------loc1 | value1loc1 | value2loc2 | value3loc3 | value4loc4 | value5 我现在想要制定一个SQL查询(实际上
我有一个称为测量的测量表.该表有一列用于位置,第二列用于相应的值(示例简化).
该表看起来像(注意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 感谢帮助! 解决方法你是正确的使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |