Sql 使用多个选择项插入到表中
我正在使用select语句创建存储过程,以便在表中插入值。 下面是我的QueuedMail表,我想在其中插入两个不同表中的行Sql 使用多个选择项插入到表中,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正在使用select语句创建存储过程,以便在表中插入值。 下面是我的QueuedMail表,我想在其中插入两个不同表中的行 Id int Unchecked Priority int Unchecked [From] nvarchar(500) FromName nvarchar(500) [To] nvarchar(500) ToName nvarchar(500) CC nvarcha
Id int Unchecked
Priority int Unchecked
[From] nvarchar(500)
FromName nvarchar(500)
[To] nvarchar(500)
ToName nvarchar(500)
CC nvarchar(500)
Bcc nvarchar(500)
Subject nvarchar(1000)
Body nvarchar(MAX)
第一个表是要发送给客户的活动
Id int
Name nvarchar(MAX)
Subject nvarchar(MAX)
Body nvarchar(MAX)
Sent bit
我想把这次活动的主体和主题插入上表。正文中有一些标记,我想用客户名称替换。
现在,客户值将来自具有不同字段(如名称、电子邮件)的客户表。现在,第一个表中的to和toname将来自这个customer表
GO
/****** Object: StoredProcedure [dbo].[SendCampaign] Script Date: 11/19/2013 14:40:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SendCampaign]
(@CampaignSubject nvarchar(max),
@CampaingBody nvarchar(max),
@TotalRecords int OutPut)
AS
BEGIN
SET NOCOUNT ON
Declare @Body nvarchar(max)=@CampaingBody
Declare @Subject nvarchar(max)=@CampaignSubject
Select *
Into #Temp
From Customer where Active=1
Select *from #Temp
Declare @Id int
Begin
Insert Into QueuedEmail([Priority],[From],FromName,[To],[ToName],CC,Bcc,
[Subject],[Body],CreatedonUtc,SentTries,SentonUtc,EmailAccountid,Attachment)
Select 3,'test@test.com','My Site',Email,'Null','Null','Null',@Subject,
dbo.ModifyCampaign(@Body,CAST(NewsLetterSubscriptionGuid as NVARCHAR(200)),Email)
,GEtUtcDate(),0,null,4,'Null'
from #Temp
END
Drop table #Temp
END
任何建议
如果不明白,请原谅。如果有的话,请留下评论
假设我有一个customer表,其中有两个条目,如
Id F_Name L_Name Email
1 Nitin Varpe fedexnit@gmail.com
2 Prashant Bankar pbankar@yahoo.com
现在我有了一个像身体一样的营地
亲爱的%Customer.Name%
//这是竞选活动的主体
现在,当我单击“发送活动”时。“%”中引用的此标记将被替换为客户名称。然后,此正文应通过客户的电子邮件插入QueuedMail表“to”列,并与客户名称相同
谢谢你的回应
希望能从你身上看到更多 客户名称在哪里(哪个表)
令牌和客户名称之间的关系是什么?您如何决定用哪个客户名称替换哪个令牌
首先构建require-select语句并验证每一列和输出。决定外部联接/左侧联接/内部联接
将%Customer.Name%在车身部件中多次或仅一次。
每行都一样吗?
如果%Customer.Name%将出现在每一行和每一正文中,那么这是非常容易的
您只需用Firstname+lastname替换即可。试试这样的方法
INSERT INTO queuedemail
(
FromName,
To,
Body
)
SELECT
F_Name,
Email,
'Dear' + F_Name +
(
SELECT body
FROM campaign
WHERE -- criteria for selecting body
)
FROM customer
WHERE -- your where condition criteria
在insert和select子句中根据您的需要包含这些字段最终提出了解决方案。谢谢大家的支持 下面是我的存储过程 创建临时表以从customer表中获取所有记录
GO
/****** Object: StoredProcedure [dbo].[SendCampaign] Script Date: 11/19/2013 14:40:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SendCampaign]
(@CampaignSubject nvarchar(max),
@CampaingBody nvarchar(max),
@TotalRecords int OutPut)
AS
BEGIN
SET NOCOUNT ON
Declare @Body nvarchar(max)=@CampaingBody
Declare @Subject nvarchar(max)=@CampaignSubject
Select *
Into #Temp
From Customer where Active=1
Select *from #Temp
Declare @Id int
Begin
Insert Into QueuedEmail([Priority],[From],FromName,[To],[ToName],CC,Bcc,
[Subject],[Body],CreatedonUtc,SentTries,SentonUtc,EmailAccountid,Attachment)
Select 3,'test@test.com','My Site',Email,'Null','Null','Null',@Subject,
dbo.ModifyCampaign(@Body,CAST(NewsLetterSubscriptionGuid as NVARCHAR(200)),Email)
,GEtUtcDate(),0,null,4,'Null'
from #Temp
END
Drop table #Temp
END
上面的select语句ModifyCampaign是我编写的用相应的客户详细信息替换活动中的代币的函数
Thanx all:)并希望它将来能帮助其他人您能发布您想要插入的表和数据吗?这些是源表还是目标表?到目前为止,您开发的查询是什么?如果活动表和客户表有任何关系,那么您可以使用联接在QueuedMail表中插入值。否则使用子查询。@raj我尝试使用select将insert插入,但它返回为子查询返回多个值error@vikas表customer和email中也没有客户和活动客户名称之间的关系