mysql - 使用 LEFT JOIN 将数据从一个数据库迁移到另一个数据库

标签 mysql

首先我要说的是,我对 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/

相关文章:

mysql - 性能不佳的 SQL 语句,尽管使用了索引

mysql - MySQL 会自动优化子查询吗?

mysql - 如果在触发器中为 null,则设置变量

mysql - 限制 oracle 子查询时会发生什么

PHP 解析错误?

mysql - 外部系统:配置连接以访问 MySQL 数据库

PHP:基于 2 列将 mysql 数据库导出为 CSV?

php - 外键没有自动递增

mysql - 正确的表结构

c# - 如果行已存在,如何将行插入表或添加值