使用表B中的所有不同数据更新表A中的行

时间:2013-12-12 23:11:18

标签: mysql sql

我正在尝试根据表A中的行更新表B中的行。表A如下所示:

a_id |   NAME    | VALUE |
--------------------------
1   |   n1      |  NULL  |
2   |   n2      |  NULL  |

和表格B如下所示:

b_id   |   VALUE     | 
----------------------
1     |   var1       |
2     |   var2       |
3     |   var3       |

如何将表格A更新为:

a_id |   NAME    | VALUE |
--------------------------
1   |   n1      |  var1  |
2   |   n2      |  var1  |
3   |   n1      |  var2  |
4   |   n1      |  var3  |
5   |   n2      |  var2  |
6   |   n2      |  var3  |

1 个答案:

答案 0 :(得分:1)

简单的方法是创建一个与A结构相同的新表AA 并做

Insert into AA Select A._id,a.NAME,b.Value From A, B

然后删除A并将AA重命名为A或清空A并从AA中选择它

不能只是一个更新语句,因为记录也需要插入。

这被称为笛卡尔积,通常是一个错误。请理解你最终会得到B中A *行数的行数.2 * 3不是问题,2,000,000 * 3,000,000 ......