ghgriffin 发表于 2014-2-19 21:33 
前几楼回答不够专业,merge可以用来做1对1,1对多的匹配,joinby是做多对多的匹配。所以在合并数据库时最好 ...
merge m:m id using ... 和 joinby id using ...都可以做多对多的 匹配,但最大的不同是 merge是基于master中每个id 对应的数据条数 (某个id 值有n条数据)将 using 中对应id 值得前n 条数据与之匹配;而joinby 是做类似笛卡尔乘积的运算。
1:                                           
| 1 | a | 
| 1 | b | 
| 2 | a | 
| 3 | a | 
| 4 | a | 
| 4 | b | 
| 6 | a | 
2:
| 1 | X | 
| 3 | X | 
| 3 | O | 
| 4 | X | 
| 4 | O | 
| 5 | OO | 
| 6 | X | 
use 1
joinby id using 2, unm(both)
| 1 | a | x | 
| 1 | b | x | 
| 2 | a |  | 
| 3 | a | x | 
| 3 | a | o | 
| 4 | a | x | 
| 4 | a | o | 
| 4 | b | x | 
| 4 | b | o | 
| 5 |  | oo | 
| 6 | a | x | 
注意: id=4 对应的数据有4条,说明joinby 执行的笛卡尔乘积运算,与merge不同。
这里就省去merge 的结果了,哈哈哈~