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 的结果了,哈哈哈~