我一直在寻找我的桌面上遇到的这种情况,我一直在搜索参考网站,但没有幸运创建正确的SQL语句来完成此任务。
以下是该方案的PSEUDO代码。
UPDATE TABLE1
SET TABLE1.ID = TABLE1.From_ID,
TABLE1.VALUE = 'ALL'
WHERE TABLE1.From_ID = TABLE2.ID
AND TABLE2.NAME = 'TEST'
基本上我只需要更新TABLE1中的两列,如果TABLE1中的id与TABLE2中的ID匹配,而TABLE2中的description列等于字符串值,则警告TABL1列只有在有的情况下才能更改TABLE1和TABLE2以及TABLE2中的ID之间的相关性,ID与特定字符串值的描述列相关。下面是表格结构和最终结果我也试图得到。
TABLE1
:
FIELD_ID CONDITIONAL_VALUE FROM_FIELDID
--------------------------------------------
1 TEST 3
7 TEST 4
5 ANY 7
TABLE2
:
FIELD_ID Description
----------------------------------------------
3 BLUE
4 BLUE
7 RED
答案 0 :(得分:2)
您需要将数据从TABLE1
加入TABLE2
UPDATE t1
SET t1.ID = t1.From_ID
,t1.VALUE = 'ALL'
FROM Table1 AS t1
JOIN table2 AS t2
ON t1.From_ID = t2.ID
AND t2.NAME = 'TEST't1
答案 1 :(得分:1)
在Transact-SQL(SQL Server的SQL方言)中,如果指定的内容超过了要更新的表,则SQL中需要FROM
子句。
update
TABLE1.ID
set
TABLE1.ID = TABLE1.From_ID ,
TABLE1.VALUE = 'ALL'
from
TABLE1,
TABLE2
where
TABLE1.From_ID = TABLE2.ID
AND TABLE2.NAME = ''TEST