Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 写这个update语句的正确方法是什么?_Sql_Sql Server 2008_Tsql - Fatal编程技术网

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
    )