我需要在单个查询中更新两个表

时间:2016-02-22 09:20:42

标签: sql-server

我需要在单个查询中更新两个表。

请查看以下查询。

Update   
m_student_moreinfo 
INNER JOIN
  m_student 
ON
  m_student_moreinfo.studentID = m_student.id
SET m_student_moreinfo.MIAStartdate=GETDATE(),m_student.status='Clinical MIA'

where
  studentID IN
(
  Select 
    smi.studentID 
  FROM 
    dbo.m_student st
  INNER JOIN
    dbo.m_student_course sc
  on
    sc.studentID=st.id
  INNER JOIN
    dbo.m_student_classClinical  scl
  on
    scl.studentcourseID=sc.id
  INNER JOIN
    dbo.m_student_moreinfo smi
  on
    smi.studentID=st.id
  where 
    scl.startDate<=GETDATE() and scl.endDate >=GETDATE()
      and MIAStartdate IS NULL
)

我在Inner附近收到了错误的语法。

2 个答案:

答案 0 :(得分:1)

您不能同时更新两个表,但可以使用OUTPUT INTO将更新链接到插入,并且可以将此输出用作第二次更新的连接 有关详细信息,请参阅thisthat

所以基本上你可以在事务中包装它并在所有更新步骤完成后提交。

答案 1 :(得分:0)

简单回答:你不能。

您可以做的是交易中的两个更新查询:

BEGIN TRANSACTION;
update query 1
update query 2
COMMIT;

那将为你完成这项工作