给定
表A
Id INTEGER
Name VARCHAR(50)
表B
Id INTEGER
FkId INTEGER ; Foreign key to Table A
我希望计算每个FkId
值的出现次数:
SELECT FkId, COUNT(FkId)
FROM B
GROUP BY FkId
现在,我只想输出的名称Table A
。
这将不起作用:
SELECT FkId, COUNT(FkId), a.Name
FROM B b
INNER JOIN A a ON a.Id=b.FkId
GROUP BY FkId
因为a.Name
不包含在GROUP BY
子句中(产生is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
错误)。
关键是要像这样从输出中移出
FkId Count
1 42
2 25
这样输出
FkId Count Name
1 42 Ronald
2 22 John
该错误消息在SO上有很多匹配项,但是某些匹配项
如何在查询输出中 有效地 包含联接的字段Table B
(与的关系为1:1 FkId
)?
您可以尝试如下操作:
;WITH GroupedData AS
(
SELECT FkId, COUNT(FkId) As FkCount
FROM B
GROUP BY FkId
)
SELECT gd.*, a.Name
FROM GroupedData gd
INNER JOIN dbo.A ON gd.FkId = A.FkId
创建一个CTE(公用表表达式)来处理上的分组/计数Table B
,然后将该结果(每行一行FkId
)加入到最终结果集中,Table A
并从中获取更多的列Table A
。
问题内容: 我在为MySQL编写SQL查询时遇到一些问题。我有一个具有以下结构的表: 我想创建一个查询,该查询从表中提取以下信息: 查询结果应如下所示: 当然,每个唯一的“ id”具有更多行。 我已经尝试过一些查询,例如 这将返回正确的结果,但是我必须使用“ pass”的其他可能值(最多7个)来扩展它 我尝试在AVG中使用嵌套的SELECT,但这没有用,因为我没有弄清楚如何正确地将其限制为当前的’
问题内容: 我想找到一个SQL查询来查找其中field1不包含$ x的行。我怎样才能做到这一点? 问题答案: 这是什么领域?IN运算符不能与单个字段一起使用,而应与子查询或预定义列表一起使用: 如果要搜索字符串,请使用LIKE运算符(但这会很慢): 如果将其限制为要搜索的字符串必须以给定的字符串开头,则可以使用索引(如果该字段上有索引)并且速度相当快:
问题内容: 考虑到与类似值的字符串列,什么是查询所有的最佳方法 ,其中包括给定数量的记录 (例如)? 我脑海中的解决方案是: 但由于前导,因此AFAIK该查询无法在列上使用索引。 必须有更好的东西。它是什么? 使用PostgreSQL,但 更希望 该解决方案也适用于其他DB。 问题答案: 在PostgreSQL 9.1中,您可以利用该模块并用它构建一个GIN索引。 您的表达式即使没有左锚也可以使用
下面是我到目前为止所获得的查询,但是,我只需要得到最近5年的数据,这就得到了所有年份的数据。我尝试为sql语句添加top5,它似乎不起作用,它显示了一些错误。如何修改此查询以只获取最近5年的数据? 下面是我所期望的数据格式。 年度合计 552,074.78 2012-01-01 466,283.62 2011-01-01 640,813.37 2010-01-01 721,182.28 2009-
问题内容: 我在尝试为此表定义SQL查询时遇到了麻烦: 有一张患者表格,其访问时记录的体重读数包括以下几列: 患者编号 体重读数 访问ID(每次访问一个) 换句话说,如果在两个记录中两个访问ID相同,则在相同的访问日期读取了两个权重。 我有这个查询来“让所有至少有两个体重读数高于150的患者”: 这是我的问题:如果我想修改此查询以便查询以下内容,该怎么办: “让所有患者在不同的访问中至少有两个体重
我有一个Spring Boot应用程序。在其中,我有一个SQL查询,需要创建一个子查询,内部将该子查询的结果与另一个表连接,然后从该内连接的结果中进行选择。但是很明显,JPA不允许您在OF子句中使用子查询(我假设既不使用JPQL也不使用Criteria API)。有没有办法绕过这个? 我考虑过将子查询的结果存储在一个临时实体中(理想情况下不创建可持久化到DB的表),然后从存储在这些实体中的数据中进