我有这个查询
SELECT * FROM TABLEA A
INNER JOIN TABLEB B ON A.ID = B.ID AND COUNT(B.*) < 4
WHERE A.STATUS = 0
在tablea
中,ID将有2行数据(2个条目),但在tableb
中,相同的ID将包含最多4行数据。我正在尝试获取tableb
中少于4行数据的ID并显示该结果。
因此,如果ID 12345在tableb
中只有2行数据,则显示该结果。 IF ID 98765在tableb
中有4行数据,请忽略此条目。
但是,当我尝试上述查询时,它会显示"group function is not allowed here"
。请有人帮忙。
答案 0 :(得分:4)
如果没有count()
或goup by
条款,则无法使用having
。在您的情况下,您需要having
SELECT * FROM TABLEA A
INNER JOIN TABLEB B ON A.ID = B.ID
WHERE A.STATUS = 0
having COUNT(B.*) < 4
请参阅sqlfiddle
答案 1 :(得分:0)
按照你说的方式写下来......
“我正在尝试获取tableb中少于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
目前尚不清楚,但如果您还只想要TableA中有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