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 查询来做到这一点?

谢谢。

4

4 回答 4

1

首先将cardnum设为'identity'(种子值为1)。然后在从 1 到 250 的 while 循环中,只需为其余三个列编写插入语句。我希望你能自己写代码。

于 2012-06-12T02:41:57.870 回答
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
于 2012-06-12T02:51:10.580 回答
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
于 2012-06-12T03:01:30.413 回答
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;

希望能帮助到你!

于 2012-06-12T03:35:08.820 回答