【发布时间】:2012-05-24 08:17:47
【问题描述】:
我有 2 张桌子:
stock:
pid name qty
--- ---- ---
1 aaaa 2
2 bbbb 3
1 aaaa 5
3 cccc 1
2 bbbb 2
stock_total:
pid name total_qty
--- ---- ---------
我可以使用此查询从stock 表中将总数量的行插入stock_total
INSERT INTO stock_total (pid, name, total_qty)
SELECT pid, name, SUM(qty)
FROM stock
GROUP BY pid, name
问题是,我将通过 cron 作业运行上面的 SQL。所以在下一次执行时,SQL 应该更新现有产品并插入不存在的产品。
如果我遍历 SELECT 结果,检查每一行是否存在于stock_total 并执行 INSERT 或 UPDATE,效率会非常低。
有没有更简单的方法来实现这一点?也许通过修改上面的 SQL。谢谢。
【问题讨论】:
-
哪个品牌的SQL? MySQL、SQL Server、Oracle 等?不同的实现有不同的可用选项。