2013-10-30 163 views
3

我有一個工作流表,其中有patient_idpat_firstname,pat_lastname數據。我想將這些數據提取到患者表中。mySQL插入並選擇

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

我遇到的問題是,這並不工作,因爲patient_id是在患者表的主鍵和一些FIRST_NAME字段或姓氏字段不匹配所以有重複嘗試插入。

我想要的只是使用來自工作流表中的任何記錄的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

我想插入或者記錄,也沒關係。我如何在單個插入語句中完成此操作?

回答

2

你有兩個選擇:

使用INSERT IGNORE:這不會修改現有的值

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

,或者您可以使用REPLACE:此選項將插入,更新該DATAS。

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

如果在保存ressources事項,不建議REPLACE

檢查MySQL文檔,詳細瞭解INSERTUPDATEREPLACE

+0

我不確定你在說什麼。你能否提供每個例子? –

+0

我用你的例子編輯了我的答案;) – Asenar

+0

這實際上與REPLACE很好:)我沒有意識到這存在,謝謝! –

-1

您可以使用GROUP BY來爲你做這個。您可以更改您的查詢的SELECT部分​​,如下所示:

SELECT patient_id, pat_firstname, pat_lastname 
FROM workflow 
GROUP BY patient_id