3

我有一个工作流表,其中包含patient_id, pat_firstname,pat_lastname数据。我想将此数据提取到患者表中。

INSERT INTO patients (patient_id, first_name, last_name)
SELECT DISTINCT patient_id, pat_firstname, pat_lastname
FROM workflow

我遇到的问题是这不起作用,因为 patient_id 是患者表中的主键,并且某些 first_name 字段或 last_name 字段不匹配,因此尝试插入重复项。

我想要的是只使用工作流表中的任何记录作为名字和姓氏。例如,如果有:

patient_id = 2 pat_first_name = Kris pat_last_name = Doman

patient_id = 2 pat_first_name = Kristofer pat_last_name = Doman

我想插入任何一条记录,没关系。如何在单个插入语句中完成此操作?

4

2 回答 2

2

你有两个选择:

使用INSERT IGNORE:这不会修改已经存在的值

INSERT IGNORE INTO patients (patient_id, first_name, last_name)
SELECT DISTINCT patient_id, pat_firstname, pat_lastname
FROM workflow

或者你可以使用REPLACE:这将要么插入,要么更新数据。

REPLACE INTO patients (patient_id, first_name, last_name)
SELECT DISTINCT patient_id, pat_firstname, pat_lastname
FROM workflow

如果节省资源很重要,REPLACE不推荐。

检查 mysql 文档以获取有关INSERT UPDATE和的详细信息REPLACE

于 2013-10-30T16:30:32.197 回答
-1

您可以使用 GROUP BY 为您执行此操作。您可以更改查询的 SELECT 部分,如下所示:

SELECT patient_id, pat_firstname, pat_lastname
FROM workflow
GROUP BY patient_id
于 2013-10-30T16:52:34.437 回答