首先我要说的是,我对 MySQL 还比较陌生。我正在尝试将数据从一个数据库迁移到另一个数据库。我们将一个数据库称为 DB1,将另一个数据库称为 DB2。
DB2 具有以下表格。
患者: id、person_id 和 start_regimen_id
治疗方案: id,代码
就诊: id、患者 ID、方案 ID、下次预约日期
DB1 具有以下表格:
患者: id、医疗记录编号、current_regimen、start_regimen nextappointment
现在:
regimen_id 数据应插入到 current_regimen
start_regimen_id 数据应插入到 start_regimen
next_appointment_date 应插入到 nextappointment
这就是我现在拥有的:
SELECT
p.person_id AS medical_record_number,
r.code AS start_regimen,
??? AS current_regimen,
DATE_FORMAT(v.next_appointment_date, '%Y-%m-%d') AS
nextappointment,
FROM patient p
LEFT JOIN regimen r ON r.id = p.start_regimen_id
LEFT JOIN (
SELECT patient_id, MAX(next_appointment_date) as next_appointment_date
FROM visit
WHERE next_appointment_date IS NOT NULL
GROUP BY patient_id
) v ON v.patient_id = p.id
我仍然将 DB2 上的urischeme_id(访问)迁移到 DB1 上的current_regimen(患者)。我不知道如何使用两个LEFT JOIN从一张表的两个表中获取数据。
任何帮助将不胜感激,因为我真的陷入困境。
最佳答案
似乎我们希望将 regimen_id
包含在 visit
表中的 GROUP BY
中,然后将其与 id 匹配
来自regimen
表。考虑到外连接,patent
似乎可能没有任何关联的 regimen
,因此我将包括 regimen_id 的
.NULL
值的匹配
LEFT
JOIN ( SELECT vv.patient_id
, vv.regimen_id
, MAX(vv.next_appointment_date) AS next_appointment_date
FROM visit vv
WHERE vv.next_appointment_date IS NOT NULL
GROUP
BY vv.patient_id
, vv.regimen_id
) v
ON v.patient_id = p.id
AND v.regimen_id <=> r.id
但这只是猜测。如果没有规范(最好通过示例数据和预期输出来说明),我们只是猜测。
注意:
foo <=> bar
是一个NULL安全比较,相当于
的简写( foo = bar OR ( foo IS NULL AND bar IS NULL ) )
关于mysql - 使用 LEFT JOIN 将数据从一个数据库迁移到另一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47698332/