我有一个工作流表,其中包含 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 是 patients 表中的主键,并且某些 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
我想插入任何一条记录,没关系。如何在单个插入语句中完成此操作?
最佳答案
你有两个选择:
使用 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
的详细信息
关于mySQL 插入与选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19688469/