0

こんにちはID,LongID,Categoty,Priority、次のような列とサンプルデータを含むテーブルがあります。

ID     LongID     Category  Priority
------------------------------------
218     2432     301        1
222     2445     301        2
205     2416     301        3
214     2425     302        1
  5     1079     302        2
152     2388     302        3
143     2382     303        1
 89     2263     303        2
126     2375     303        3

複製関数を作成しています。たとえば、現在カテゴリ 301 にいるときに複製を押すと、次の利用可能なカテゴリ ID (カテゴリの最大値) + 1 が見つかります。これは 304 を意味し、カテゴリ 301 から 304 までのすべての行をコピーします。

    ID     LongID     Category  Priority
    218     2432     301        1
    222     2445     301        2
    205     2416     301        3
    214     2425     302        1
    5       1079     302        2
    152     2388     302        3
    143     2382     303        1
    89      2263     303        2
    126     2375     303        3
    218     2432     304        1 <-new 304
    222     2445     304        2<-new 304
    205     2416     304        3<-new 304

これどうやってするの?

4

2 に答える 2

3

INSERT..SELECT構文を使用して簡単に実行できます。

DECLARE @newCat INT
SELECT @newCat = COALESCE(MAX(Category),0)+1 FROM YourTable

INSERT INTO YourTable (ID, LongID, Category, Priority)
SELECT ID, LongID, @newCat, Priority
FROM YourTable WHERE Category = 301
于 2013-08-07T09:13:03.810 に答える
0
INSERT INTO YourTable (ID, LongID, Category, Priority)
SELECT ID, LongID, @newCat, Priority
FROM YourTable WHERE Category = your_id
于 2013-08-07T09:22:18.830 に答える