专家,
这是我的目标:
从查询中获取A的值,其中B = max(B),如果查询返回0行,则设置为999999。
如果使用方法1,语法错误,因为没有group by子句,但我不需要组。
如果使用方法2,当CONDITIONS为假,即0行时,cursor.getCount()== 1> 0,则无法获得999999。
我能想到的一种方法是在tb中添加C列设置值'constant',然后在方法1中按C添加group。 但这完全不是恩典。
我该怎么办?感谢。
方法1:
Red Mark
方法2:
Cursor cursor = db.rawQuery("select A, B " +
"from tb " +
"where "CONDITIONS" +
"having B=max(B)", null);
cursor.moveToFirst();
valueA = cursor.getDouble(0);
if (cursor.getCount()==0) valueA = 999999;
cursor.close();
答案 0 :(得分:1)
您应该在select子句中放置'max(b)'函数,因为这是查找聚合的最佳方法。
即使值为NULL,您将在结果游标中至少获得一行。因此,您应该从光标读取'max(b)'的值,然后添加逻辑。
答案 1 :(得分:0)
在第一种方法中,您使用的是与GROUP BY关键字一起使用的关键字。所以代码会给你错误。
有关键字示例:
SELECT * FROM Students GROUP BY name HAVING count(name) < 2;
您可以使用以下命令:
SELECT column_name FROM table_name where MAX(column_name);
和
cursor.moveToFirst();
if (cursor.getCount()<1){
valueA= 999999;
}else{
valueA= cursor.getDouble(0);
}
cursor.close();
答案 2 :(得分:0)
如果使用组功能,则必须使用group by。
http://localhost:4444/selenium-server/driver?cmd=getLogMessages