使用来自另一表的修改后的数据填充表。 (SQL)

时间:2019-01-08 00:13:57

标签: mysql

我是SQL的新手,所以很抱歉,如果这是一个简单的问题。这是它的最基本版本(看起来与this question非常相似):

我有两个表,表1和表2。表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'    ...

我需要做的是使用来自Table2的FATDATA填充Table1的DATA列。具体来说,对于表1中的每一行,我需要获取其ID,在表2中查找唯一的对应行,然后使用特定的过程修剪其FATDATA值,并将结果存储在表1中的行中。

最终结果应该是

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

除了我自己的“ TRIM(str)”函数而不是“ AVG(intCol)”之外,我是否可以像开头的Woo那样对question进行解决?再次,我还是SQL的新手,所以我什至无法理解他的代码在做什么。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您需要加入一个UPDATE。您可以使用以下语法调用FUNCTION

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

答案 2 :(得分:0)

您可以加入,就像这样

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

在您的集合中,不仅仅是分配给b.FATDATA,您还可以执行修剪功能或获取要分配的实际值所需的一切。

答案 3 :(得分:0)

我被打败了。我建议您阅读并熟练掌握联接。您将一直在SQL中使用联接。

W3School Joins