[英]Update multiple rows with corresponding values from another table MySQL
使用MySQL,我正在研究一個腳本,該腳本將從CSV文件導入數據。 我已經到了腳本完成的位置,可以為單個用戶導入數據,但是現在我想擴展到所有用戶。 我目前的陳述如下:
UPDATE werte
SET werte=(SELECT Date_Enrollment
FROM THKON01.data
WHERE auto_patient_id = 1020)
WHERE folder_id = 1525
AND number=4;
現在,我想要的是使用所有用戶的注冊日期(因此,我將省略“ WHERE auto_ Patient_id ...”語句),並將其插入所有對應的行中。 問題就在這里。 我用這個語句一次嘗試了兩個用戶
UPDATE werte
SET werte=(SELECT Date_Enrollment
FROM THKON01.data
WHERE auto_patient_id = 1020
OR auto_patient_id = 1051)
WHERE folder_id between 1524 AND 1525
AND number=4;
但是,這給了我一個錯誤,該錯誤表示“查詢返回多行”,是指SELECT Date_Enrollment的內部查詢。 請注意,auto_patient_id並未按順序編號,因此我不能在其中使用“之間”。
編輯:為澄清
我有兩張桌子。 werte是我想要將值存儲到的位置。 THKON01.data是我要從中讀取值的表。 在此示例的情況下,我希望將Date_Enrollment值寫入werte表。 假設我有3個用戶想要這樣做,那么THKON01.data的結構如下所示:
auto_patient_id Date_Enrollment
1020 01.01.1911
1050 02.01.1912
1073 03.01.1913
... ...
現在,我要將其插入如下所示的werte表中:
folder_id werte
1525 <empty>
1526 <empty>
1527 <empty>
... ...
我希望插入它們,以便將THKON01.data(01.01.1911)的第一個值復制到werte(folder_id 1525的字段)中的第一個值,將第二個(02.01.1912)復制到第二個(folder_id 1526)等等。 Folder_id按順序編號,auto_ Patient_id則沒有編號。 我希望這可以澄清一下。
如果您在字段auto_patient_id
和folder_id
之間有一些鏈接,則可以嘗試這樣的操作
UPDATE werte
SET werte=(SELECT Date_Enrollment
FROM THKON01.data
WHERE (your_link))
WHERE number=4;
這里your_link
可以是THKON01.data.auto_patient_id = werte.somefield
或THKON01.data.auto_patient_id = somefunction(werte.folder_id)
它將一次只選擇一個記錄,並更新屬於外部where條件的所有記錄。
更新
如果您想使用一些bash腳本,則可以使用smth這樣的
$folder_id = 1 # or some other start number
mysql -e "SELECT Date_Enrollment FROM THKON01.data" | while read Date_Enrollment; do
mysql -e "update werte set werte = $Date_Enrollment where folder_id = $folder_id"
$folder_id = $folder_id + 1
done
您說您的文件夾ID是有序的,因此我們每次只能添加1,而不是從結果中獲取它們。
我絕對不精通bash腳本編寫,因此該腳本可能無法正常工作,但我希望這個想法很明確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.