SQL:此处不允许使用组函数
我有这个疑问SQL:此处不允许使用组函数,sql,oracle11g,Sql,Oracle11g,我有这个疑问 SELECT * FROM TABLEA A INNER JOIN TABLEB B ON A.ID = B.ID AND COUNT(B.*) < 4 WHERE A.STATUS = 0 在表A中,ID将有2行data2条目,但在表B中,同一ID最多有4行数据。我试图获取表B中数据行数少于4行的ID并显示结果 因此,如果ID12345在表B中只有2行数据,则显示该结果。如果ID98765在表B中有4行数据,则忽略此条目 但是当我尝试上面的查询时,它说这里不允许使用组函数
SELECT * FROM TABLEA A
INNER JOIN TABLEB B ON A.ID = B.ID AND COUNT(B.*) < 4
WHERE A.STATUS = 0
在表A中,ID将有2行data2条目,但在表B中,同一ID最多有4行数据。我试图获取表B中数据行数少于4行的ID并显示结果
因此,如果ID12345在表B中只有2行数据,则显示该结果。如果ID98765在表B中有4行数据,则忽略此条目
但是当我尝试上面的查询时,它说这里不允许使用组函数。请找人帮忙。如果没有goup by或have子句,就不能使用count。在你的情况下,你需要
请参阅如果没有goup by或have子句,则不能使用count。在你的情况下,你需要
请看用你想说的方式写出来 我试图获取表B中数据行数少于4行的ID并显示结果
SELECT * FROM TABLEA a
JOIN TABLEB b ON b.ID = a.ID
WHERE A.STATUS = 0
and (Select count(*) from TABLEB
where id = a.Id) < 4
不清楚,但如果您也只需要表A中有2行或更多行的ID:
SELECT * FROM TABLEA a
JOIN TABLEB b ON b.ID = a.ID
WHERE A.STATUS = 0
and (Select count(*) from TABLEB
where id = a.Id) < 4
and (Select count(*) from TABLEA
where id = a.Id) > 1
用你想说的方式来写 我试图获取表B中数据行数少于4行的ID并显示结果
SELECT * FROM TABLEA a
JOIN TABLEB b ON b.ID = a.ID
WHERE A.STATUS = 0
and (Select count(*) from TABLEB
where id = a.Id) < 4
不清楚,但如果您也只需要表A中有2行或更多行的ID:
SELECT * FROM TABLEA a
JOIN TABLEB b ON b.ID = a.ID
WHERE A.STATUS = 0
and (Select count(*) from TABLEB
where id = a.Id) < 4
and (Select count(*) from TABLEA
where id = a.Id) > 1
加入子查询``从表a中选择*内部加入选择B.ID,CountB.ID作为表B组中的计数,由B.ID C按a.ID=C.ID和计数<4进行计算,其中a.STATUS=0``@SujeshArukil谢谢:加入子查询``从表a中选择*内部加入选择B.ID,CountB.Id作为表B组中的计数,由A.Id=C.Id上的B.Id C和计数<4,其中A.STATUS=0``@SujeshArukil谢谢:哈哈!您声明在没有分组依据的情况下无法使用计数。然后通过这样做的方式展示一个不正确的解决方案!您可以在不使用group by的情况下使用聚合函数,只要它们将对查询返回的整个数据集进行操作,并且select子句中没有非聚合表达式。您的回答失败,因为select*包含两个表中的所有属性。哈哈!您声明在没有分组依据的情况下无法使用计数。然后通过这样做的方式展示一个不正确的解决方案!您可以在不使用group by的情况下使用聚合函数,只要它们将对查询返回的整个数据集进行操作,并且select子句中没有非聚合表达式。您的回答失败,因为select*包含两个表中的所有属性。