我有一个Users表和一个Memberships表。用户可以拥有许多会员资格,每年有偿或无偿返还。我想为用户中的每个用户创建一个新的成员行,作为免费成员。
会员资格目前为空,因此我必须自动为每一行创建新的ID。
会员资格如下:
[Id]
[StartDateTime]
[EndDateTime]
[Frozen]
[MembershipType]
[PaidDateTime]
用户
[Id]
,[AspUserId]
,[Title]
,[Forename]
,[Surname]
,[Email]
,[Dob]
,[DateCreated]
,[AddressId]
,[PhoneNumber]
,[Gender]
,[Nationality]
,[WMSFPlayerId]
,[ProfileImageURL]
,[FavouriteGame]
,[Bio]
,[Username]
,[LastLogin]
,[WMSFPlayerId_Confirmed]
,[MembershipId]
会员资格:
ID将是新ID
StartDateTime将于今天
结束日期时间为今天起一年
冻结将为0
MembershipType将为0
PaidDateTime将为null
如何为用户中的每个用户在会员表中插入免费会员?我还必须使用为它们创建的新MembershipID更新Users表。
答案 0 :(得分:2)
首先,我想指出您的表定义不支持每个用户拥有多个成员资格的要求。您现在拥有的是每个会员的多个用户。用户表不应包含MembershipID
字段。应将其从User
表中删除,并将UserID
字段添加到Membership
表中。一旦这样做了,
INSERT INTO Membership (Id, StartDateTime, EndDateTime, Frozen, MembershipType)
SELECT Id, GETDATE(), GETDATE(), 0, 'Free' FROM User
显然,您需要根据自己的要求更改值。
答案 1 :(得分:1)
您将使用insert . . . select
。像这样:
insert into memberships(id, StartDate, EndDate, Frozen, MembershipType, PaidDateTime)
select u.aspuserid, getdate(), dateadd(year, 1, getdate()), 0, 0, null
from users u;