我已经使用JOIN和EXISTS和ISNULL绕圈了。我无法理解这一点,而且我已经完成了数百个主题。
表页面中的记录可以推动各个零售网页的输出。此表中的字段确定显示的项目:
e.g。
我需要将这些字段与 Accounts_Emails 中具有相同名称的字段进行比较。
此表允许用户保存电子邮件简报的选项。如果他们想要发送更多类似于当前页面上的项目,他们会点击该页面上的按钮。
我需要的是一个存储过程,用于检查该用户是否已经在Accounts_Emails记录中具有完全匹配的选项,如果没有,则使用这些选项插入新记录。
在字段中,NULL值表示ALL,因此我需要比较空值。我将PageID和AccountID传递给过程,以便我可以获取当前的Pages记录并将Accounts_Emails限制为当前用户。
这就是我所拥有的:
IF NOT EXISTS
(
SELECT 1 FROM Accounts_Emails a
JOIN Pages l on l.PageID = @PageID
WHERE
a.fk_AccountID = @AccountID AND
(ISNULL(a.Category,'NULL') = ISNULL(l.Category,'NULL')) AND
(ISNULL(a.Colour,'NULL') = ISNULL(l.Colour,'NULL')) AND
(ISNULL(a.Size,'NULL') = ISNULL(l.Size,'NULL')) AND
(ISNULL(a.OnSale,'NULL') = ISNULL(l.OnSale,'NULL'))
)
答案 0 :(得分:0)
看起来你需要使用MERGE语句。使用Accounts_Emails作为TARGET。
网上有很多很好的例子。