我正在尝试使用Contacts_List
表中的最后一个活动日期更新Opened
表。所以我正在为Opened
表做一个内连接,另一个表有一个公共列,然后用联系人列表做另一个内连接。我不知道为什么,但我不断收到以下错误。
Msg 156,Level 15,State 1,Line 4
关键字'inner'附近的语法不正确。
请帮忙!
我的代码:
UPDATE [dbo].[Contacts_List]
SET [LAST_ACTIVITY_DATE] = MAX(Opened.EvntCptrdDt)
WHERE [LAST_ACTIVITY_DATE] != MAX(Opened.EvntCptrdDt)
INNER JOIN [dbo].[Intrctn] R (nolock) ON Opened.IntrctnSK = R.IntrctnSK
INNER JOIN [dbo].[Contacts_List] C (nolock) ON R.CustEmailID = C.Email_id
GROUP BY Opened.IntrctnSK, R.IntrctnSK, R.EmailAdrText
发布的另一个问题是单个内部联接..我不确定如何在UPDATE语句中执行2个内部联接
答案 0 :(得分:0)
您必须使用join为更新设置from clausule,但在这种情况下,您可以从变量执行此操作,声明它然后从变量更新值
select @variableUpdate = max(Opened.EvntCptrdDt), @variableWhere = max(Opened.EvntCptrdDt) from Contacts_List join Intrctn R (nolock) on Opened.IntrctnSK = R.IntrctnSK join Contacts_List C (nolock) on R.CustEmailID = C.Email_id
where LAST_ACTIVITY_DATE != max(Opened.EvntCptrdDt)
group by Opened.IntrctnSK, R.IntrctnSK, R.EmailAdrText
update [dbo].[Contacts_List]set [LAST_ACTIVITY_DATE] = @variableUpdate where [LAST_ACTIVITY_DATE] !=@variableWhere
答案 1 :(得分:0)
尝试这样的事情
UPDATE [dbo].[Contacts_List]
SET [LAST_ACTIVITY_DATE] = MAX(Opened.EvntCptrdDt)
FROM [Contacts_List]
INNER JOIN Opened
ON ...........
INNER JOIN [dbo].[Intrctn] R (nolock)
ON Opened.IntrctnSK = R.IntrctnSK
INNER JOIN [dbo].[Contacts_List] C (nolock)
ON R.CustEmailID = C.Email_id
答案 2 :(得分:0)
UPDATE CL
SET [LAST_ACTIVITY_DATE] = MAX(Opened.EvntCptrdDt)
FROM [dbo].[Contacts_List] CL
INNER JOIN [dbo].[Intrctn] R (nolock) ON CL.Opened.IntrctnSK = R.IntrctnSK
AND R.CustEmailID = CL.Email_id
WHERE [LAST_ACTIVITY_DATE] != MAX(Opened.EvntCptrdDt)
--GROUP BY Opened.IntrctnSK, R.IntrctnSK, R.EmailAdrText
我认为您不需要GROUP BY
。