3

次のような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 を、特定の列が特定の値と等しい場所に限定したいと考えています。

JOIN の後または SET の後に WHERE を挿入することは合法ではないようです。JOIN を使用して更新を既に制限していると思っていましたが、そうではないようです。

どこに WHERE 句を挿入できますか?

4

3 に答える 3

2

あなたの例はこれまでのところ取り除かれているため、何を求めているのかを正確に伝えるのは困難です。

ネストされた selects エイリアスを次のように指定するだけの問題かもしれません。

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
于 2012-12-06T11:42:31.637 に答える
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が結合されたテーブルの 1 つからのものである場合:

UPDATE table t1
SET t1.column = t2.value 
FROM table t1
JOIN table2 t2 ON ---
于 2012-12-06T11:38:46.757 に答える