我正在摆弄创建子查询只是为了习惯他们。如果他们的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 is invalid in the select list because it is not contained in either an aggregate function of a group by clause.
答案 0 :(得分:2)
除了GROUP BY
子句中的某些奇怪的()
之外,您的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
答案 1 :(得分:2)
三个错误:
jxn
的表或别名。请改为尝试:
SELECT id, charges
FROM myTable
WHERE id IN
(
SELECT id
FROM jxnTable
GROUP BY id
HAVING COUNT(id) > 10
)