我是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的新手,所以我什至无法理解他的代码在做什么。
答案 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中使用联接。