Oracle中SELECT rownum, t.* FROM ( SELECT SUM( integral ) integral, user_id userId FROM doc_integral_record WHERE integral_state = '1' GROUP BY integral,user_id ORDER BY SUM( integral ) DESC ) t WHERE t.userId = '刘起' 报错
时间: 2024-04-20 16:27:20 浏览: 130
根据你提供的信息,无法确定具体的错误信息。请提供错误信息或错误代码,以便我能够帮助你更好地解决问题。常见的 SQL 查询错误包括语法错误、表或字段不存在、数据类型不匹配、权限不足等等。你可以检查一下这些方面,看看是否有问题。另外,你可以尝试在 Oracle 数据库中执行每个子查询和最终查询,逐步排查错误,以便更好地解决问题。
相关问题
SELECT rownum, t.* FROM ( SELECT SUM( integral ) integral, user_id userId FROM doc_integral_record WHERE integral_state = '1' GROUP BY integral,user_id ORDER BY SUM( integral ) DESC ) t WHERE t.userId = '刘起'
这是一个 SQL 查询语句,目的是查询名为 "doc_integral_record" 的表中,用户 "刘起" 的积分总和,并按照积分总和的大小进行降序排列。具体的查询方法是先把积分按照用户进行分组,再对每个用户的积分总和进行求和,并按照积分总和进行排序,最后筛选出用户 "刘起" 的积分总和。其中,"rownum" 是 Oracle 数据库特有的伪列,用于对查询结果进行行号排序。
SELECT rownum, t.* FROM ( SQL 错误 [40000]: ERROR, 含聚集函数嵌套的查询目标列中不能包含未聚集的列! com.oscar.util.OSQLException: ERROR, 含聚集函数嵌套的查询目标列中不能包含未聚集的列! SELECT SUM( integral ) integral, user_id userId FROM doc_integral_record WHERE integral_state = '1' GROUP BY integral,user_id ORDER BY SUM( integral ) DESC ) t WHERE t.userId = '刘起'
根据错误信息,可以看出错误原因是子查询中不能同时包含聚合函数和非聚合函数的列。在这个 SQL 查询语句中,子查询中的 "SUM(integral)" 是一个聚合函数,而 "user_id" 则是一个非聚合函数的列,因此会报错。解决这个问题的方法是,在子查询中只选择聚合函数的列,即 "SUM(integral)",而不包含其他非聚合函数的列。修改后的 SQL 查询语句如下:
```
SELECT rownum, t.*
FROM (
SELECT SUM(integral) integral, user_id userId
FROM doc_integral_record
WHERE integral_state = '1'
GROUP BY user_id
ORDER BY SUM(integral) DESC
) t
WHERE t.userId = '刘起';
```
这个查询语句中,子查询中只选择了聚合函数 "SUM(integral)",并且在 GROUP BY 子句中只分组了 "user_id" 这一列,以确保查询结果正确。
阅读全文