在我的存储过程中,我有一条select语句,该语句将返回多行结果。我想将这些结果插入到另一个表中。 当我运行存储过程时,select语句返回了两行结果,但是它只将一行结果而不是两行插入到sendemail表中。 有人可以帮忙吗?谢谢
ld
答案 0 :(得分:1)
您应该使用insert . . . select
:
INSERT INTO [dbo].[SendEmail] ( column list goes here )
SELECT 5, 'test@hotmail.com', 'Test', c.[Email], v.[Name], '',
'Test Email',
'<p>
Hi ' + v.[Name] + ',<br /><br />
Your account will be expired on ' + cast(a.AccountExpiryDate as varchar(255)) + '.
</p>',
0, GETUTCDATE(), 1, 1)
FROM Account a LEFT JOIN
Customer c
ON c.[Id] = a.[CustomerId] LEFT JOIN
VIP v
ON v.[Id] = c.[VIPId]
WHERE a.AccountExpiryDate Between Cast(GETDATE() AS DATE) AND CAST(DATEADD(day, 30, GETDATE()) AS DATE);
注意:
NULL
(大概)。c
的{{1}},而不是Customers
。VIP
时,显式写出日期部分(DATEADD()
而不是day
)。