2つのテーブルAとB(Oracleデータベース)があります。表Bには、idとmdateの2つの列があり、idは主キーです。表AにはIdとmdateの2つのカラムがあり、idは外部キーです。私は一致するIDのテーブルAの最大値でなければならないテーブルBの値を更新したい。別のテーブルの最大値に基づいてテーブル値を更新したい
Update b
set mdate= (select max(mdate) from a group by Id)
where b.id = a.id;
2つのテーブルAとB(Oracleデータベース)があります。表Bには、idとmdateの2つの列があり、idは主キーです。表AにはIdとmdateの2つのカラムがあり、idは外部キーです。私は一致するIDのテーブルAの最大値でなければならないテーブルBの値を更新したい。別のテーブルの最大値に基づいてテーブル値を更新したい
Update b
set mdate= (select max(mdate) from a group by Id)
where b.id = a.id;
あなたは非常に近いです。 WHERE
句は、相関サブクエリにするためにサブクエリに移動する必要があります。また、UPDATE
のパラメータはテーブル名であり、カラム名ではありません。
UPDATE b
SET mdate = (SELECT MAX(mdate) FROM a WHERE b.id = a.id)
は、MySQLであなたもJOIN
でそれを行うことができます氏Barmarへ
UPDATE b
JOIN (SELECT id, MAX(mdate) AS mdate
FROM a
GROUP BY id) AS a ON a.id = b.id
SET b.mdate = a.mdate
Update b
set(b.mdate) = (select MAX(a.mdate) from a where b.id = a.id)
where exists (select 1 from a where b.id = a.id);
感謝を。
rdbmsとは何ですか? SQL Server、Postgres、oracle? –
あなたは、MySQLとOracleの両方にタグを付けました。どちらですか? – Barmar
'WHERE b.id = a.id'をサブクエリに移動します。 – Barmar