Sql 基于FROM子句更新表时,如何限制WHERE?
我有一个SQL UPDATE子句,它看起来像:Sql 基于FROM子句更新表时,如何限制WHERE?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个SQL UPDATE子句,它看起来像: UPDATE table SET column =value FROM (SELECT bla bla FROM bla bla WHERE col = val) JOIN (SELECT bla bla FROM bla bla WHERE col = val) 我想将更新限制在特定列等于特定值的位置 在联接之后或集合之后插入WHERE似乎不合法?我以为我已经用JOIN限制了更新,但看起来不是这样 在哪里可以插入Where子句?如果此vlau
UPDATE table
SET column =value
FROM
(SELECT bla bla FROM bla bla WHERE col = val)
JOIN
(SELECT bla bla FROM bla bla WHERE col = val)
我想将更新限制在特定列等于特定值的位置
在联接之后或集合之后插入WHERE似乎不合法?我以为我已经用JOIN限制了更新,但看起来不是这样
在哪里可以插入Where子句?如果此
vlaue
是文本值,而不是来自这些联接表的值,则可以执行以下操作:
UPDATE table t1
SET t1.column = value -- literalvalue
FROM
(
SELECT bla bla FROM bla bla)
JOIN
(
SELECT bla bla FROM bla bla
) on thefirstblah = somethingfromthesecondblah
) t1
或:
UPDATE table t1
SET t1.column = value -- literalvalue
FROM
(
SELECT bla bla FROM bla bla
JOIN anotherbla ON ----
) t1;
但是,如果此值
来自其中一个联接表:
UPDATE table t1
SET t1.column = t2.value
FROM table t1
JOIN table2 t2 ON ---
到目前为止,你的例子已经被删去了,很难确切地说出你想要的是什么 这可能只是给你的嵌套别名的问题,如下所示:
Update table
Set column =value
From
(Select bla bla From bla bla Where col = val) a
Join
(Select bla bla From bla bla Where col = val) b
On a.blah = b.blah -- did this go missing from the example?
Where
...
SQL Server有一个更新表单,可以帮助:
Update
t1
Set
blah
From
table1 t1 -- note same as updated table
inner join
(select...) a
On t1.blah = a.blah
Where
t1.Col = value
使用类似以下内容的查询: 对我来说最重要的是在更新之前加入
update table1 t1 join table2 t2 on t1.id1 = t2.id2 set t1.value = t2.otherValue;
可能重复,请参阅