关于MERGE 的用法
2009-03-05 21:05
218 查看
题目:
一个月统计一次每个雇员去了哪些国家
user_name region
tom india
jerry usa
mike england
marry holland
但是有一张汇总表
user_name least_region arrived_region_count
雇员名 最新去的国家 已经到过多少个国家
tom india 4
jerry usa 6
mike england 10
marry holland 11
已经到过多少个国家
的计算规则是 如果上个月 这个表的数据还是
user_name least_region arrived_region_count
雇员名 最新去的国家 已经到过多少个国家
tom greece 3
jerry sweden 4
mike switchland 9
marry germany 10
例如tom上个月还只到了3个国家,那么这个月需要就是 3+1,因为tom这个月又去了一个新的国家,印度。
解答:
/*
用user_name字段将a和b表关联,
若可关联到则将b表中的记录更新到a,
若没有关联到,则将b中“多出”的记录插入a表
*/
MERGE agg_table a
USING month_table m
ON (a.user_name = m.user_name) --用user_name字段将a和b表关联,
WHEN MATCHED THEN --若可关联到则将b表中的记录更新到a
UPDATE
SET last_region = m.region,
arrived_region_count = arrived_region_count + 1
WHEN NOT MATCHED THEN --若没有关联到,则将b中“多出”的记录插入a表
INSERT
(user_name, least_region, arrived_region_count)
VALUES
(m.user_name, m.region, 1);
一个月统计一次每个雇员去了哪些国家
user_name region
tom india
jerry usa
mike england
marry holland
但是有一张汇总表
user_name least_region arrived_region_count
雇员名 最新去的国家 已经到过多少个国家
tom india 4
jerry usa 6
mike england 10
marry holland 11
已经到过多少个国家
的计算规则是 如果上个月 这个表的数据还是
user_name least_region arrived_region_count
雇员名 最新去的国家 已经到过多少个国家
tom greece 3
jerry sweden 4
mike switchland 9
marry germany 10
例如tom上个月还只到了3个国家,那么这个月需要就是 3+1,因为tom这个月又去了一个新的国家,印度。
解答:
/*
用user_name字段将a和b表关联,
若可关联到则将b表中的记录更新到a,
若没有关联到,则将b中“多出”的记录插入a表
*/
MERGE agg_table a
USING month_table m
ON (a.user_name = m.user_name) --用user_name字段将a和b表关联,
WHEN MATCHED THEN --若可关联到则将b表中的记录更新到a
UPDATE
SET last_region = m.region,
arrived_region_count = arrived_region_count + 1
WHEN NOT MATCHED THEN --若没有关联到,则将b中“多出”的记录插入a表
INSERT
(user_name, least_region, arrived_region_count)
VALUES
(m.user_name, m.region, 1);
相关文章推荐
- SQL中MERGE关于更新、插入的一种用法
- 关于Oracle中merge的用法
- 关于merge与IdTransferringMergeEventListener的用法
- 关于R语言中的merge和cbind功能的用法
- 关于typedef的用法总结
- [cocos2d-x·总结]关于cocos2d-x几种画图方法的用法与思考
- 关于ExpandableListView用法的一个简单小例子
- php手册中关于func_get_args()的用法例子
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
- GUI 关于JComboBox的用法
- java中关于时间的用法示例
- direct=true 错误处理方法 (关于 Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法
- 关于const的定义以及用法
- C++中关于return的用法总结
- 关于grep,sed,awk的几个用法
- 关于typedef的用法总结
- 关于typedef的用法总结
- 关于java中Arrays.sort()的几种用法
- Linux下bash中关于日期函数date的格式及各种用法
- Java:关于super()的用法