Android 计数为(*)的房间SQL查询
我在Android Room中遇到SQL查询问题。我有如下疑问Android 计数为(*)的房间SQL查询,android,sql,android-room,Android,Sql,Android Room,我在Android Room中遇到SQL查询问题。我有如下疑问 @Query("SELECT userId, COUNT(*) AS userCount FROM User " + "GROUP BY userId " + "ORDER BY userCount ASC") List<UserCount> getUserAndCount(); @Query(“选择userId,COUNT(*)作为用户的userCount”+ “按用户ID分组”+ “
@Query("SELECT userId, COUNT(*) AS userCount FROM User " +
"GROUP BY userId " +
"ORDER BY userCount ASC")
List<UserCount> getUserAndCount();
@Query(“选择userId,COUNT(*)作为用户的userCount”+
“按用户ID分组”+
“按用户计数ASC订购”)
列出getUserAndCount();
但Android Studio显示
无法解析符号“userCount”
。由于上述语句在SQL中运行良好,您能告诉我的代码中有什么问题,以及如何在Android Room中使用As
?从order by中删除别名,您需要在order by CLUSE中使用COUNT(*)表达式
@Query("SELECT userId, COUNT(*) AS userCount FROM User " +
"GROUP BY userId " +
"ORDER BY COUNT(*)")
List<UserCount> getUserAndCount();
@Query(“选择userId,COUNT(*)作为用户的userCount”+
“按用户ID分组”+
“按计数排序(*))
列出getUserAndCount();
将您的订单更改为orderbycount(*)ASC
问题不在您的select中,而是在select语句中声明userCount
以便where语句不知道谁userCount
我有一个具有元素userCount的userCount对象。这就是为什么我想把它保存为userCount。我想使用Count(*)是可行的,但我需要自定义命名。只需在外部查询中进行子查询和排序。orderby
子句中似乎不支持别名。我没料到,但在这种情况下只需重复COUNT(*)
。@dwir182子查询是什么意思?我想房间里没有这样的东西。你能解释一下怎么做吗?这是可行的,但我需要用自定义命名“userCount”来保存。因为我有一个UserCount对象,它有元素UserCount。它已经命名为UserCount,只需要从order by cluaseoh yeah中删除名称UserCount。那么,如果我需要在查询中多次调用COUNT(*)
,我是否需要反复调用COUNT(*)
?没有方法保存为userCount
并使用它?是的,有一种方法,在这种情况下,您需要使用子查询。如果您共享userCount类,它包含哪些字段?