2012-09-27 39 views
0

我想更新表中的一行,将所有列更新为新值,除了应保持旧值和新值之间最大值的值。在Android和ContentValue的Sqlite中更新值

是否有某种方式可以在不创建原始查询的情况下执行此操作(例如使用update(String table, ContentValues values, String whereClause, String\[\] whereArgs)函数或其他类似的方法使用ContentValues),以便抓住提供者的角色缩放和其他优点?

我想达到的查询是这样的:

UPDATE users SET name='newName', address='newAddress', 
       lastLogin=GREATEST(lastLogin,1348757941); 
+0

不,我知道的。我不认为你可以在ContentValues中放置函数(你仍然可以尝试像在rawQuery中那样放置字符串“max(something)”),或者你可以尝试用where子句找出某些东西。你可以发布rawQuery吗? – njzk2

+0

我需要一个ContentValues中的函数。张贴原始查询 – Addev

+1

我怀疑你可以把最大的功能是contentValue,因为逃避可能是为了防止这样的事情。我没有看到没有rawQuery的方法(但我不是sqlite的专家) – njzk2

回答

1

GREATEST功能实际上被称为MAX

UPDATE users 
SET name = 'newName', 
    address = 'newAddress', 
    lastLogin = MAX(lastLogin, 1348757941)