我有一个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)
我想将UPDATE限制为WHERE特定列等于特定值。
在JOIN之后或SET之后插入WHERE似乎是合法的吗?我以为我已经使用JOIN限制了更新,但它似乎没有出现。
我可以在哪里插入WHERE子句?
答案 0 :(得分:2)
到目前为止,您的示例已被删除,因此很难准确说出您的目标。
这可能只是给你的嵌套选择别名如下:
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
答案 1 :(得分:1)
如果这个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;
但是,如果此value
来自其中一个联接表:
UPDATE table t1
SET t1.column = t2.value
FROM table t1
JOIN table2 t2 ON ---
答案 2 :(得分:0)
使用类似这样的查询:
对我有用的重要事情是在更新之后加入。
update table1 t1 join table2 t2 on t1.id1 = t2.id2 set t1.value = t2.otherValue;