SELECT * from books b
join author a on b.a_id = a.a_id
having a.age < AVG(a.age);
请问我的这个sql语句错在什么地方?
SELECT A.ID, AVG(A.AGE) FROM BOOKS B
JOIN AUTHOR A ON B.A_ID = A.A_ID
GROUP BY A.ID
HAVING A.AGE < AVG(A.AGE);
缺少group by, 和具体所选的列
你用age平均值过滤但是你没有查询age啊 需要查询出来之后再去比较过滤
【以下回答由 GPT 生成】
这个SQL语句存在语法错误,错误在于HAVING子句中使用了聚合函数AVG(),但没有使用GROUP BY子句。在HAVING子句中只能使用聚合函数和GROUP BY子句中的列进行过滤。
下面是修正后的SQL语句:
SELECT *
FROM books b
JOIN author a ON b.a_id = a.a_id
GROUP BY a.a_id
HAVING a.age < AVG(a.age);
修正后的语句中添加了GROUP BY子句,并以a_id进行分组,使得可以正确使用AVG函数进行比较。
【相关推荐】