我有两张桌子:
Main:
Id | Count | Type
name1 3 1
name2 5 2
...
Temp:
Id |Count|
name1 7
name3 2
如果两个表中都存在Count
,我想更新Main
表的Id
列。
所以做完一些操作后,上面的例子应该是:
Main:
Id | Count | Type
name1 7 1
name2 5 2
我目前的代码是:
QSqlQuery search_query = database_.exec("SELECT * From Temp");
while (search_query.next()){
database_.exec("UPDATE Main"
" SET Count=" + search_query.value(1).toString() +
" WHERE Id = '" + search_query.value(0).toString() + "' ;");
}
database_.exec("DELETE FROM Temp");
它工作正常,但速度很慢!! (500行需要2-3分钟!!)
我正在寻找更有效的方式。我该怎么办?
答案 0 :(得分:1)
如何向数据库调用单个更新脚本?
UPDATE Main m
INNER JOIN Temp t ON
m.Id = t.Id
SET m.Count = t.Count
答案 1 :(得分:1)
在UPDATE语句中,您可以使用相关子查询查找新值:
UPDATE Main
SET Count = (SELECT Count FROM Temp WHERE Id = Main.Id)
WHERE Id IN (SELECT Id FROM Temp)