2017-09-05 27 views
-1

多くの結合を持つ複雑な選択クエリがあります。これはツールから生成されます。私はそのクエリに基づいてフィールドを更新する必要があります。複雑な選択クエリのSQL UPDATE文

私はデコードしようとしましたが、自分のデコードに基づいたアップデートが正しいとは確信していません。ツール生成クエリに基づいて値を更新できますか?以下のように: - A,B, ..列(例えば列D)の一つはおそらく、我々はそれがはるかに良いことができますF_Sales.customer_code

UPDATE F_Sales SET d_source = "XYZ" 
WHERE 
F_Sales.customer_code in (
    SELECT D 
    FROM (-- untouched original query 
    SELECT A, B, C, D......... FROM K, L, M, N, O,P ....) q 
) 

または

UPDATE F_Sales SET d_source = "XYZ" 
FROM F_Sales 
JOIN (-- untouched original query 
    SELECT A, B, C, D......... FROM K, L, M, N, O,P ....) q 
ON F_Sales.customer_code = q.D 

にマッピングすることができます提供

UPDATE F_Sales SET d_source = "XYZ" WHERE 
F_Sales.customer_code in (SELECT A, B, C, D......... FROM K, L, M, N, O,P ....) 
+1

CTEまたは一時表を使用すると読みやすくなります。あなたはそれを避けるためにそれに参加することができますIN – Leonidas199x

+0

'IN(SELECT A、B、C、D ...'を使用することはできませんので 'IN'句は、 dのように書くことができます。 – Tanner

+0

1カラムと比較したWHERE句のUPDATE文に似ているので、まだ漏れがあるかもしれません。 – RanchiRhino

答えて

1
create table #temp(customer_code INT) 
insert into #temp SELECT A, B, C, D......... FROM K, L, M, N, O,P .... 

UPDATE F_Sales SET d_source = "XYZ" 
FROM F_Sales join #temp ON 
F_Sales.customer_code = #temp.customer_code 
+0

しかし、このクエリは失敗する可能性がありますが、 1つのテーブルの正確なシナリオを把握する必要があります。 – RanchiRhino

0

生成されたクエリを表示できる場合は