android - 如何根据 sqlite for Android 中的另一列值获取一列的最大值

标签 android sqlite

抱歉,我不太了解 SQL 语法。基本上,我的表中有以下列:

ID     GAME      DRAW NUMBER
x      0         23
x      1         34
x      0         24
x      1         35
x      1         33

我想根据 GAME 列值获得最大 DRAW NUMBER。 例如,如果我选择第 1 场比赛,我想获得 35 的开奖号码(即,第 1 场比赛的最高开奖号码是 35)

我想到的最好的是:

String table = "xxx", col = "DRAW NUMBER", game_col = "GAME";    
SQLiteDatabase db = this.getReadableDatabase();

Cursor c =  db.query(table, null, col+"=(SELECT MAX("+col+") FROM " + table + " GROUP BY " + game_col + ")", null, null, null, null);

.

我还想根据 GAME 值获取特定游戏的计数。 这是我目前所拥有的:

int game_val = 1, row_count;
String table = "xxx", game_col = "GAME";
SQLiteDatabase db = this.getReadableDatabase();  

Cursor c = db.rawQuery("SELECT COUNT(*) FROM " + table + " WHERE " + game_col + " = " + game_val + "", null); 
row_count = c.getCount();

提前致谢!

最佳答案

你可以使用 rawQuery

对于特定的游戏,只需将 1 替换为一个变量(编辑:删除分组依据,在这个游戏中不需要,谢谢 Bae)

Cursor c = db.rawQuery("SELECT max(DRAW NUMBER) FROM xxx WHERE GAME = 1", null);

所有游戏的最大数量列表

Cursor c = db.rawQuery("SELECT GAME, max(DRAW NUMBER) FROM xxx GROUP BY GAME", null);

关于android - 如何根据 sqlite for Android 中的另一列值获取一列的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27856292/

相关文章:

android - 如何在奥利奥中启动后台服务?

android - IntelliJ/AS - 如何一键切换Logcat过滤器?

android - 房间线程管理

java - Java 中的 DriverManager.getConnection 使用相对路径

ios - 无法更新 SQlite3 表

ios - 如何在 Objective C 中使用 NSPredicate 指定范围

android - 如何停止android应用程序kill上的所有服务,线程,卸载库

android - apk 必须使用与之前版本相同的证书进行签名 [release app with other informations]

java - 在同一 Activity 中从工具栏搜索 View 获取查询字符串?

sql - SQLite 中的更新语法