2016-06-15 10 views
-3

私は私のクエリでこのラインを持っている:SQL UPDATEステートメントの上部と下部の行

UPDATE Tnm_Lookup SET 
P_C = 'C' 
    where Tnm_Lookup_ID in (select top (355) Tnm_Lookup_ID 
    from Tnm_Lookup 
    where Tnm_Lookup_ID = Tnm_Lookup_ID 
    order by Tnm_Lookup_ID DESC); 

GO 

私はまた、現在、それを修正しようとしているトップの行のための1つを持っています。 基本的には、私は結果が上手くいかない、つまりトップ(355)を選択しないといけないので、私はどのように私の結果を達成できるかについてのガイダンスが必要ですか?

この表は誰が使用しているかによって異なるサイズになるため、多少の違いから始めることができ、更新できる可能性があります。

+0

したがって、テーブルの最初と最後の行を更新しますか?あなたの質問は少し不明です – Marusyk

+0

あなたが求めていることです:どのようにTOP述語の変数行数を渡すか? – dlatikay

+0

355の代わりに%を使用しますか? – xQbert

答えて

0

クエリをストアドプロシージャにカプセル化する場合は、行数のパラメータを渡すことができます。 @RowCount、355を@RowCountに置き換えてください。

+0

これはうまくいく可能性があります。これを試してみましょう。申し訳ありません、私はバックエンドのフロントエンド開発者です。 – user2516641

0

うん、私が求めていることは、私は950行があり、半分の表は、元のデータであり、他方がコピーされたものであるしているテーブルがあるとしています。設定された数の行を使用する代わりに、私は小さくて大きなテーブルで動作する別の方法を使用する必要があります。

+0

あなたは答えを装ったコメントを隠すのではなく、それを明確にするためにあなたの質問を編集する必要があります。 – HABO

0

これは何ですか?

declare @t table (id int, trim_lookup_id int,p_c varchar(1)) 

insert into @t values 
(1,1, null), 
(20,2, null), 
(2,3, null), 
(26,4, null), 
(50,5, null), 
(51,1, null), 
(51,2, null), 
(53,3, null), 
(54,4, null), 
(55,5, null) 

;with cte as 
(
    select id,trim_lookup_id,p_c,row_number() over(partition by trim_lookup_id order by id) rn 
from @t 
) 
update @t 
    set p_c = 'C' 
from @t t 
join cte on cte.id = t.id 
where cte.rn = 2 

select * from @t 
関連する問題