2017-01-20 9 views
0

私は更新ステートメントを実行したいが、この更新クエリは1つの行のみを更新する必要がある。私は "ID"または "キー"が1回だけ現れることを知る必要があります。1つのIDで更新する

update td 
set td.t_ID = d.Document_ID 
from #t_documents td 
join document d with (nolock) 
on d.D_header = td.t_header_ID 
and d.D_sequence = td.t_D_sequence 
where count(distinct d.Document_ID) = 1 

私は更新がこれだけは、あなたが探しているものであれば

+1

サンプルデータと期待される結果を追加します。 –

+1

はwhere句でサブクエリを使用する必要があります。 '1 =(select count()from

ここでid = td.id ...)' – Stephen

答えて

1

わからない一回行われたことを確認したが、外出先与えるこのクエリ行う方法:

IF (
    SELECT count(DISTINCT d.Document_ID) 
    from #t_documents td 
    join document d with (nolock) 
    on d.D_header = td.t_header_ID 
    and d.D_sequence = td.t_D_sequence) = 1 
BEGIN 
    update td 
    set td.t_ID = d.Document_ID 
    from #t_documents td 
    join document d with (nolock) 
    on d.D_header = td.t_header_ID 
    and d.D_sequence = td.t_D_sequence 
END 

やスティーブンなどを(これをテストしていない):

update td 
set td.t_ID = d.Document_ID 
from #t_documents td 
join document d with (nolock) 
on d.D_header = td.t_header_ID 
and d.D_sequence = td.t_D_sequence 
where (
    SELECT count(DISTINCT d.Document_ID) 
    from #t_documents td 
    join document d with (nolock) 
    on d.D_header = td.t_header_ID 
    and d.D_sequence = td.t_D_sequence) = 1 
+0

は最初のオプションが期待通りに機能しないことを指摘しています。 – Stephen

+0

問題は私が本当にこの質問で "期待されている"とは思っていませんが、あなたは正しいかもしれません – PawelCz

+0

もう1つは私が期待したものです。 –

関連する問題