SQL——两个表之间的更新:用一个表的字段更新另一个表的字段

--1. 这种写法相当于一个 Left join, 以外面的where为更新条数。

--   注意! 如果内面的表的(where之后取得的)条数比外面表的(where之后取得的)条数少, 会造成 不满足=条件的记录 赋给 null 值。

--   要想不出现错误地赋 NULL 值, 必须在外面加一个 in ( select ... ) , 强制内外表的记录一致。

  1. UPDATE patient
  2. SET    ForeignName = (
  3.            SELECT ForeignName_New
  4.            FROM   Patient_YNG
  5.            WHERE  patient.PatientID = patient_yng.PatientID
  6.        )
  7. WHERE  patient.ClinicID = 1483
  8.        AND patient.PatientID IN (SELECT patientid
  9.                                  FROM   Patient_YNG)

--2. 这种写法轻松, 而且不易出错。

  1. UPDATE patient
  2. SET    ForeignName = ForeignName_New
  3. FROM   Patient_YNG
  4. WHERE  patient.PatientID = patient_yng.PatientID
  5.        AND patient.ClinicID = 1483

来源:Linux社区 作者:yenange

来源:http://www.linuxidc.com/Linux/2012-01/52000.htm


如果给你带来帮助,欢迎微信或支付宝扫一扫,赞一下。