2013-03-21 88 views
2

我试图插入或更新记录到sqlite数据库,并且只有在新值大于旧值时才更新值。SQLite条件插入或替换

的模式是:

CREATE table IF NOT EXISTS SearchTable 
    (Owner INTEGER PRIMARY KEY, Generations INTEGER DEFAULT 0) 

我已经试过这样的命令:

INSERT OR REPLACE INTO SearchTable(Owner, Generations) 
VALUES (?, MAX((SELECT Generations FROM SearchTable WHERE Owner = ?), ?)) 

,但它给了我为后世空值。

我可以使用一些帮助。

回答

7

尝试

INSERT OR REPLACE INTO SearchTable(Owner, Generations) 
SELECT ?, MAX(Generations) FROM SearchTable WHERE Owner = ? 
+0

感谢peterm。我最终使用: 插入或替换到SearchTable(所有者,世代) SELECT?,MIN(?, COALESCE(Generations,999))FROM SearchTable WHERE Owner =? – HalR 2013-03-21 05:33:13

+0

太棒了!你当然欢迎。 – peterm 2013-03-21 17:34:30