更新最新数据
Update latest data
我想更新 MASTER_DB table 中的 FIRST_DATE 字段。
但是,我想更新 RECORD_DB table.
中最新记录的日期
UPDATE
MASTER_DB
SET
MASTER_DB.FIRST_DATE = RECORD_DB.DATE_R
FROM
MASTER_DB
INNER JOIN
RECORD_DB
ON
MASTER_DB.ID = RECORD_DB.ID
示例:
我)Table MASTER_DB
ID FIRST_DATE
122
II)TableRECORD_DB
ID DATE_R
122 2015-01-01
122 2016-01-02
122 2017-01-03
MASTER_DB table 的 FIRST_DATE 字段的更新必须接收与 RECORD_DB table 相同 ID 的最高日期,即是,2017-01-03
TMASTER_DB table 中的输出应该是:
ID FIRST_DATE
122 2017-01-03
MySQL 中的正确语法是:
UPDATE MASTER_DB m JOIN
(SELECT ID, MAX(DATE_R) AS MIN_DATE_R
FROM RECORD_DB
GROUP BY ID
) R
ON R.ID = m.ID
SET M.FIRST_DATE = R.MAX_DATE_R;
SQL 服务器中的语法:
UPDATE m
SET M.FIRST_DATE = R.MAX_DATE_R
FROM MASTER_DB m JOIN
(SELECT ID, MAX(DATE_R) AS MAX_DATE_R
FROM RECORD_DB
GROUP BY ID
) R
ON R.ID = m.ID;
一个选项是相关子查询:
update master_db m
set m.first_date = (select max(r.date_r) from record_db r where r.id = m.id)
如果主行没有任何记录行,并且您不想将它们更新为 null
,则连接更合适 - 或者可更新的 CTE:
with m
set m.first_date = r.max_date_r
from master_db m
inner join (select id, max(r.date_r) max_date_r record_db goup by id) r
on r.id = m.id
我想更新 MASTER_DB table 中的 FIRST_DATE 字段。 但是,我想更新 RECORD_DB table.
中最新记录的日期UPDATE
MASTER_DB
SET
MASTER_DB.FIRST_DATE = RECORD_DB.DATE_R
FROM
MASTER_DB
INNER JOIN
RECORD_DB
ON
MASTER_DB.ID = RECORD_DB.ID
示例:
我)Table MASTER_DB
ID FIRST_DATE
122
II)TableRECORD_DB
ID DATE_R
122 2015-01-01
122 2016-01-02
122 2017-01-03
MASTER_DB table 的 FIRST_DATE 字段的更新必须接收与 RECORD_DB table 相同 ID 的最高日期,即是,2017-01-03
TMASTER_DB table 中的输出应该是:
ID FIRST_DATE
122 2017-01-03
MySQL 中的正确语法是:
UPDATE MASTER_DB m JOIN
(SELECT ID, MAX(DATE_R) AS MIN_DATE_R
FROM RECORD_DB
GROUP BY ID
) R
ON R.ID = m.ID
SET M.FIRST_DATE = R.MAX_DATE_R;
SQL 服务器中的语法:
UPDATE m
SET M.FIRST_DATE = R.MAX_DATE_R
FROM MASTER_DB m JOIN
(SELECT ID, MAX(DATE_R) AS MAX_DATE_R
FROM RECORD_DB
GROUP BY ID
) R
ON R.ID = m.ID;
一个选项是相关子查询:
update master_db m
set m.first_date = (select max(r.date_r) from record_db r where r.id = m.id)
如果主行没有任何记录行,并且您不想将它们更新为 null
,则连接更合适 - 或者可更新的 CTE:
with m
set m.first_date = r.max_date_r
from master_db m
inner join (select id, max(r.date_r) max_date_r record_db goup by id) r
on r.id = m.id