T_SUBJECTS (subject_id、date_of_birth) と T_ADMISSIONS (visit_id、subject_id、date_of_admission、age) の 2 つのテーブルがあります。年齢列を入学時の年齢で更新したい。更新クエリを作成し、「単一行のサブクエリが複数の行を返す」を取得しました。エラーは理解できましたが、where exists 句で問題が解決すると思いました。以下はクエリです。
UPDATE
t_admissions
SET
t_admissions.age =
(
SELECT
TRUNC(months_between(t_admissions.date_of_admission,
t_subjects.date_of_birth)/12)
FROM
t_admissions,
t_subjects
WHERE
t_admissions.subject_id = t_subjects.subject_id
AND t_admissions.age = 0
AND t_admissions.date_of_admission IS NOT NULL
AND t_subjects.date_of_birth IS NOT NULL
)
WHERE
EXISTS
(
SELECT
1
FROM
t_admissions, t_subjects
WHERE
t_admissions.subject_id = t_subjects.subject_id
);