使用来自不同表的修改数据填充表((sql)

yacmzcpb  于 2021-06-15  发布在  Mysql
关注(0)|答案(4)|浏览(368)

我是sql新手,所以如果这是一个简单的问题,我很抱歉。下面是最简单的版本(似乎与这个问题非常相似):
我有两张table,一张和二张。表1有两个名为“id”和“data”的字符串列,表2有一个“uid”列和一个“fatdata”列。表2中的ID都是唯一的,但不在表1中,并且假定表1中的ID在表2中显示为UID。


**Table1**

ID    DATA   OTHERSTUFF
id1          ...
id1          ...
id2          ...
id2          ...
id3          ...

**Table2**

UID   FATDATA               MORESTUFF
id1   'adsf<data1>asdgas'   ...
id2   'hrhdfh<data2>sdh'    ...
id3   'adhfdh<data3>adf'    ...

我需要做的是使用表2中的fatdata填充表1的数据列。具体来说,对于表1中的每一行,我需要获取它的id,在表2中查找唯一的对应行,然后使用特定的过程修剪它的fatdata值,并将结果存储在表1中的行中。
最终结果应该是


**Table1**

ID    DATA      OTHERSTUFF
id1   'data1'   ...
id1   'data1'   ... 
id2   'data2'   ...
id2   'data2'   ...
id3   'data3'   ...

除了我自己的“trim(str)”函数而不是“avg(intcol)”,我能像吴宇森(john woo)一样解决一开始提到的问题吗?再说一次,我还是sql新手,所以我甚至无法理解他的代码在做什么。

dly7yett

dly7yett1#

update Table1 set DATA = (select FATDATA from Table2 where UID = Table1.ID)
where exists (select FATDATA from Table2 where UID = Table1.ID)
z3yyvxxp

z3yyvxxp2#

你可以做一个连接,比如

update a
set Data = b.FATDATA
from Table1 a
join Table2 b
on a.ID = b.UID

在您的集合中,而不是仅仅分配给b.fatdata,您可以执行修剪函数或任何您需要的操作,以获得您想要分配的实际值。

anauzrmj

anauzrmj3#

我被打败了。我建议你多读一些关于连接的知识,并把它们学得很好。在sql中,您将一直使用连接。
W3学校加入

bxgwgixi

bxgwgixi4#

你需要一个 UPDATE . 你可以调用 FUNCTION 使用以下语法:

UPDATE t1
SET t1.otherstuff = YourFunction(t2.fatdata)
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.id = t2.uid

相关问题