我有两个(我的)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我不能对每个表中的行数做出任何假设。
希望这很清楚。感谢您提供的任何帮助。
答案 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)