2012-06-12 113 views
0

我有一個客戶數據庫我想添加一組卡號。在表中有多個列將是相同的,但是卡號會增加1直到完成。因此,舉例來說......我想補充禮品卡1 - 250與其它列一樣......所以想是這樣的:將多個記錄添加到表

Cardnum  price booktype service 
1    9.99  1   12 
2    9.99  1   12 
3    9.99  1   12 

等等...這將重複進行,直到cardnum中是'250'是否有可能通過SQL查詢做到這一點?

謝謝。

+0

什麼RDBMS? Cardnum的一個簡單的自動增量功能就可以解決這個問題,使用250個相同的插件。 –

+0

SQL Server。它需要成爲存儲功能嗎? WOuld就像select startnum,endnum from cardtable,而startnum> endnum?我不確定如何插入多個values..and在更新什麼「選擇」,顯然@的startnum的盈方和endnum – Shmewnix

回答

0

@jimdrang已經提供答案,但由於我剛剛完成了一個完整的例子,使用CREATE TABLE和一個存儲過程來完成這項工作,所以我想不妨將它發佈給任何正在尋找這條道路的人。

CREATE TABLE Cards 
(
    Cardnum int not null primary key, 
    price money not null, 
    booktype int not null, 
    service int not null 
); 
GO 

CREATE PROCEDURE [dbo].[sp_AddCards] (
    @Price money, 
    @BookType int, 
    @Service int, 
    @NumCards int, 
    @StartNum int 
) 
    AS 
BEGIN 
    DECLARE @CurCard int 
    SELECT @CurCard = @StartNum 

    WHILE @CurCard < @StartNum + @NumCards 
    BEGIN 
    INSERT INTO Cards (Cardnum, price, booktype, service) 
    VALUES (@CurCard, @Price, @BookType, @Service) 

    SELECT @CurCard = @CurCard + 1 
    END 
END 

GO 

EXEC sp_AddCards @Price=9.99, @BookType=1, @Service=12, @NumCards=250, @Startnum=810041; 

SELECT * FROM Cards; 

DROP TABLE Cards; 
DROP PROCEDURE sp_AddCards; 

希望它有幫助!

1

首先使cardnum成爲'身份'(種子值爲1)。然後在從1到250的while循環中爲其餘三個colums編寫插入語句。我希望你可以自己編寫代碼。

+0

我最初想: SELECT開始,結束 WHILE啓動<=結束 開始 INSERT INTO cardtable(cardnum = start,price ='9.99',booktype ='1',service ='12') VALUES(start) SET start = start + 1 END – Shmewnix

+0

這不是很完美...我很困惑在「while」中插入多個表格 – Shmewnix

1

由於該表已經存在,試試這個:

DECLARE @book INT 
SET @book = 810041 
WHILE (@book) < 810291 
BEGIN 
    INSERT INTO tableName 
    VALUES(@book,9.99,1,12) 
    SET @book = @book +1 
END 

假設你正在使用的SQL Server 2005或更高版本以及希望從頭創建該表:

CREATE TABLE [dbo].[#books](
     [id] [int] IDENTITY(1,1) NOT NULL, 
     [price] decimal(6,2) NULL, 
     [bookType] [int] NULL, 
     [service] [int] NULL) 

    INSERT INTO #books 
    VALUES(9.99,1,12) 
    GO 250 
+0

該表格已經存在。我正在更新表格以包含250個相同的卡片(只是不同的數字)。這也不是1 - 250它實際上就像810041 - 8100291,所以它們需要變量。 – Shmewnix

+0

查看我以前的評論,它將需要是一個變量。 – Shmewnix

+0

好了,請檢查我的最新編輯 – jimdrang

1

您需要創建一個存儲過程來實現這一點,代碼就這樣去了

declare @cnt int 

set @cnt = 0 
while(@cnt < 250) 
begin 
insert into dbo.xxx(price, booktype, servic) 
values(9, 1, 12) 

set @cnt = @cnt + 1 
end 
+0

您可以將@ cnt設置爲任何值,聲明變量'@ end'來取代250 – codingbiz

+0

完美。謝謝! – Shmewnix