我有一个客户数据库我想添加一组卡号。在表中有多个列将是相同的,但卡号将增加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 :(得分:1)
首先将cardnum设为'identity'(种子值为1)。然后在1到250的while循环中,只为其余三个列写一个insert语句。我希望你能自己编写代码。
答案 1 :(得分: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
答案 2 :(得分: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
答案 3 :(得分: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;
希望它有所帮助!