2016-11-22 4 views
0

私の 'products'テーブル内の他の2つのテーブルにない製品を更新しようとしています。製品には固有の識別子「ean」があります。私の計画は、他のテーブルと2つの左結合を行い、他の両方のフィールドにnullが含まれている場合に更新することでした。 MS SQL Serverの使用2つの左ジョインとwhere句を使用したSQLサーバーの更新

テーブル:それが動作するようには思えないので、私が間違って何を製品、テーブル2、表3

update product 
    set published = 0 
    from p as product 
    left join a as table2 
    on p.ean = a.ean 
    left join t as table3 
    on p.ean = t.ean 
    where t.ean is null and a.ean is null 

をやっていますか?

+5

何が間違っていますか?任意のエラーまたは間違ったデータ? 'UPDATE'なしで' SELECT'を使って最初にテストして、クエリが正しい行を返していることを確認してください。 –

+0

where句には宣言された名前(table3.ean)が必要な場合があります。このシナリオに関連するサンプルデータが表示されれば、さらに助けてくれるかもしれません。 – happymacarts

+1

私はあなたがエイリアスを後方に置いたと思います。テーブル名が 'table2'の場合は、' LEFT JOIN table2 as A 'と書くべきです。 –

答えて

0

あなたのエイリアスに問題があると思います。

あなたのテーブルがproduct, table2, table3ある場合、クエリは次のようになります。

update P 
set published = 0 
from product as P 
left join table2 as A 
    on P.ean = A.ean 
left join table3 as T 
    on P.ean = T.ean 
where T.ean is null and A.ean is null 
関連する問題