需要组合SQL查询来更新2个表

我有2张桌子。表1和表2。我需要根据某些条件更新这2个表。

  1. Table1中的SQL select查询将返回多个记录,让我们
  2. 将其命名为SQLQuery1
  3. 从返回的SQLQuery1结果中,我需要遍历每条记录,然后
  4. 从Table2执行另一个SQL查询,该查询仅返回1
  5. 记录,我们将其命名为SQLQuery2
  6. 使用SQLQuery2返回的结果更新Table1和Table2。

是否有单个查询来组合上述操作?

如果您需要更多信息,请告诉我

评论
  • 头文字D
    头文字D 回复

    我不会那样做。

    您可以使用外部Apply来摆脱光标:

    SELECT * 
    FROM T_Query1
    OUTER APPLY 
    (
         SELECT TOP 1 * FROM T_Query2
         WHERE T_Query2.query1_id = T_Query1.id
    ) AS tQuery2 
    

    然后,您可以像这样进行更新:

    UPDATE A SET some_value = tQuery2.some_new_value
    FROM T_Query1 AS A 
    OUTER APPLY 
    (
         SELECT TOP 1 * FROM T_Query2
         WHERE T_Query2.query1_id = T_Query1.id
    ) AS tQuery2