【发布时间】:2014-09-06 01:25:14
【问题描述】:
我有两张桌子:
Main:
Id | Count | Type
name1 3 1
name2 5 2
...
Temp:
Id |Count|
name1 7
name3 2
如果两个表中都存在Id,我想更新Main 表的Count 列。
所以对上面的例子做了一些操作后,结果应该是:
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 分钟!!)
我正在寻找更有效的方法。我该怎么办?
【问题讨论】:
-
您应该使用
JOIN并在一个语句中执行UPDATE。顺便说一句,你使用 sqlite 或 MySQL 还是两者兼而有之? -
@VMai 两个都可以用
-
@omid - 我建议在编写内联 SQL 查询之前,先在查询程序中尝试它们。这样,您就不会浪费时间试图找出使用 C++ 程序的最佳方法。