mySQL 插入与选择

标签 mysql sql select insert distinct

我有一个工作流表,其中包含 patient_idpat_firstnamepat_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 UPDATEREPLACE 的详细信息

关于mySQL 插入与选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19688469/

相关文章:

mysql - Access 和MySQL

mysql - 无法添加或更新子行。外键约束失败

mysql - 如何查找并存储用户出现在搜索条件中的次数

sql - 生成行组合的最快方法

MySQL 查询返回语法错误

mysql - 使用 Sequel Pro 本地备份 MySQL 数据库

sql - MySQL:在全文搜索中查找多个单词 - 仅完全匹配

sql - 如何从 psql 中备份 postgresql 数据库?

html - 如何设置 SELECT 下拉列表中可见的最大项目数?

MySQL:如何进行条件更新?