(我的)SQL迭代地使用来自一个表的数据来填充另一个/从列表中选择

时间:2012-01-22 22:34:17

标签: mysql sql

我有两个(我的)SQL表A,B .A有很多列A.(a,b,c,d ......)。 B只包含两列x,y。 B中的行数(很多)小于A中的行数.B.x中的所有值都是唯一的。

A已完全填充。在B中只存在B.x中的值,B.y为空,我想用(例如)A.b中的值填充B.y,对应于B.x的每个值,表示为A.a

换句话说,我需要做的是每个B.x找到A.a中的匹配并取相应的A.b并将其插入到包含B.x值的行中的B.y.然后,我需要对B.x中的所有值进行迭代。

由于我们不需要进入的原因,我需要在单个SQL语句中执行此操作;没有PHP,没有Python等。没有嵌入。我正在寻找的是一种从一个到另一个进行迭代选择的方法。我还想避免创建临时表。

FWIW我不能对每个表中的行数做出任何假设。

希望这很清楚。感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

这假设A.a值也是唯一的。如果不是,你可能需要考虑一种分组方式。

update B inner join A on B.x=A.a set B.y=A.b;

答案 1 :(得分:0)

我相信你要规范化你的A表,如果对于每个A.a值,A.b的值是唯一的,以下查询将起作用

update B
   set B.y =
       (select distinct A.b
          from A
         where A.a = B.x)