Sql 子查询中的聚合
我正忙于创建子查询,只是为了适应它们。我试图获得一个ID,如果一个人的ID出现在连接表中X次,那么他/她的ID和相关成本。我试过了Sql 子查询中的聚合,sql,Sql,我正忙于创建子查询,只是为了适应它们。我试图获得一个ID,如果一个人的ID出现在连接表中X次,那么他/她的ID和相关成本。我试过了 select id, charges from myTable where id in ( select id from jxnTable having (count(jxn.id> 10)) group by jxn.id 这给了我错误jxn.id在选择列表中无效,因为它不包含在group by子句的聚合函数中。除了HAVING子句中的一些奇数()
select id, charges from myTable
where id in
(
select id from jxnTable
having (count(jxn.id> 10))
group by jxn.id
这给了我错误
jxn.id在选择列表中无效,因为它不包含在group by子句的聚合函数中。
除了HAVING
子句中的一些奇数()
之外,您的group by
还属于子查询中
select id, charges from myTable
where id in
(
select id from jxnTable
GROUP BY id
having (count(id>) 10)
)
这也可以通过对子查询使用JOIN
,而不是IN()
子句来完成,这可能更快:
SELECT m.id, charges
FROM myTable M
INNER JOIN (
SELECT id FROM jxnTable
GROUP BY id
HAVING COUNT(id) > 10
) cnt ON m.id = cnt.id
除了
HAVING
子句中的一些奇怪的()
之外,您的分组依据属于子查询
select id, charges from myTable
where id in
(
select id from jxnTable
GROUP BY id
having (count(id>) 10)
)
这也可以通过对子查询使用JOIN
,而不是IN()
子句来完成,这可能更快:
SELECT m.id, charges
FROM myTable M
INNER JOIN (
SELECT id FROM jxnTable
GROUP BY id
HAVING COUNT(id) > 10
) cnt ON m.id = cnt.id
三个错误:
- GROUP BY和HAVING必须是同一查询的一部分,GROUP BY必须以文本形式出现在相应HAVING之前
- 计数表达式周围的括号不正确
- 您没有名为
jxn
的表或别名
请尝试以下方法:
SELECT id, charges
FROM myTable
WHERE id IN
(
SELECT id
FROM jxnTable
GROUP BY id
HAVING COUNT(id) > 10
)
三个错误:
- GROUP BY和HAVING必须是同一查询的一部分,GROUP BY必须以文本形式出现在相应HAVING之前
- 计数表达式周围的括号不正确
- 您没有名为
jxn
的表或别名
请尝试以下方法:
SELECT id, charges
FROM myTable
WHERE id IN
(
SELECT id
FROM jxnTable
GROUP BY id
HAVING COUNT(id) > 10
)
哦,很抱歉我编辑了你的答案而不是我的:页面刷新了,我点击了错误的链接。我知道这可以通过加入来完成,但是我正在尝试熟悉子查询:)@dasblinkenlight我正在编辑的过程中,突然出现了编辑通知-我的习惯是复制我自己的所有编辑,这样我就可以将其粘贴回编辑:)@wootscootinboogie他们都使用子查询-一个是()
子查询,另一个是联接
子查询。@Michael,我明白了。这种或那种方式有什么特别的好处吗?哦,很抱歉我编辑了你的答案而不是我的:页面刷新了,我点击了错误的链接。我知道这可以通过加入来实现,但是我正在尝试熟悉子查询:)@dasblinkenlight我正在编辑的过程中,突然出现了编辑通知-我的习惯是复制我自己的所有编辑,这样我就可以将其粘贴回编辑:)@wootscootinboogie他们都使用子查询-一个是()子查询,另一个是联接
子查询。@Michael,我明白了。这种或那种方式有什么特殊的优势吗?