Sql 写这个update语句的正确方法是什么?
我正试图写一个程序来更新两个表,但我在语法上有点卡住了 这些表被命名为Sql 写这个update语句的正确方法是什么?,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我正试图写一个程序来更新两个表,但我在语法上有点卡住了 这些表被命名为SupportTicketsTbl和tblSupportEvent,这些表之间的链接是第三个名为tblTicketsInEvents的表 tblSupportEvent包含人员计划中所有事件的列表,每个事件都有开始和结束时间,此过程作为sql作业运行,检查当前时间是否大于事件结束时间,如果是,则更新其状态 现在,其语法很简单: UPDATE tblSupportEvent SET [status] = 3
SupportTicketsTbl
和tblSupportEvent
,这些表之间的链接是第三个名为tblTicketsInEvents
的表
tblSupportEvent
包含人员计划中所有事件的列表,每个事件都有开始和结束时间,此过程作为sql作业运行,检查当前时间是否大于事件结束时间,如果是,则更新其状态
现在,其语法很简单:
UPDATE
tblSupportEvent
SET
[status] = 3
WHERE
eventend < CURRENT_TIMESTAMP
AND
[status] = 1
我认为解决这个问题的方法是将所有过期的票证ID选择到一个表中,然后对SupportTicketsTbl
进行更新,其中票证ID位于我的表变量中,尽管这看起来有点混乱。使用update语句/联接等是否有更好的方法
我这样问是因为虽然我自己可以解决这个问题,而且它可能运行得足够快,但我想知道正确的方法
谢谢我相信这样做比创建临时表更有效
UPDATE SupportTicketsTbl
SET toUpdate = newVal
WHERE
ticketID IN (
SELECT id
FROM tblSupportEvent
WHERE expiredCondition
)
UPDATE SupportTicketsTbl
SET toUpdate = newVal
WHERE
ticketID IN (
SELECT id
FROM tblSupportEvent
WHERE expiredCondition
)