当前位置: 首页 > 面试题库 >

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

曹波鸿
2023-03-14
问题内容

我有一张带有度量的表格,称为 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

帮助表示赞赏!


问题答案:

您是正确的使用者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小提琴



 类似资料:
  • 问题内容: 我有一个简单的猫鼬模型,在其上我调用find,最大限制为100,它调用完成的回调: 如果我将此行修改为(或更高的数字),则永远不会调用该回调 任何地方都没有错误,数据库保持正常运行,但是此节点应用程序冻结,必须重新启动。 如果我进入服务器以连接到相同的数据库并连接到mongo shell,则在同一集合上,find({})会在不到一秒的时间内返回所有〜700个集合。当我将同一数据库克隆到

  • 我有一段代码,其中一个接口有一个可选的返回方法,实现它的一些类返回一些东西,其他的没有。 在努力拥抱这个辉煌的“空杀器”的过程中,下面是我尝试过的: 附注。如果(X!=null)不能做,Optional有没有真正的用处?

  • 我创建了使用jdbctemplate的spring boot应用程序,在localhost上一切都很好,但当我将应用程序部署到Heroku并访问endpoint时,我得到了以下信息: 如果SQL查询不好,那么同一个应用程序如何在本地机器上工作呢? 下面是我使用的jdbcTemplate方法:

  • 问题内容: 我有三个SQL选择,需要将它们的结果加在一起。这三个中的两个使用相当复杂的联接。 我需要的是所有三个值的总和。 。无论如何,是否可以在单个语句中执行此操作? 问题答案: 你可以的。 请勿使用,因为它会忽略重复的值(会导致)。

  • 我有两个针对同一个表的select查询,这两个查询在select部分中都只包含一个< code>sum(),但是在< code>where子句中有所不同。我需要做的是对两个查询的结果求和。 查询示例: 我需要的是像这样的东西 其中选择和,如我的示例查询中所示。 我试着回答这个问题,但没能成功。我还尝试用替换字段,但这不起作用,因为不允许在中使用

  • 问题内容: 我正在使用以下语句 是另一个查询,它从4个表返回大约20个字段,没什么特别的。这按预期工作,我得到5个结果。 如果我在条件字段上添加一个子句,尽管我开始得到8个结果。如果我按第一个字段排序,那没有问题。 有人知道会发生什么吗? 编辑以澄清 -我目前仅在Access 2003中进行测试,最终的语句将通过Excel前端通过ADO进行参数化查询。 问题答案: 这是Access中指令的一个已知