[英][MySQL]Insert a value depending on a condition
我正在學習MySQL,所以我對所有這些東西都有些陌生,但是上次我問你們時,您真的很有幫助,所以也許您可以再次幫助我,因為我一直找不到我自己回答。
好的,問題是,我需要向已經存在的表中添加一個新列,它應該像這樣:
ALTER TABLE `medicos`
ADD COLUMN `tipo_medico` VARCHAR(20) NOT NULL DEFAULT 'indiferente' AFTER `sueldo`;
現在,我應該運行一條INSERT指令在其中添加數據。 添加該列后,該表如下所示:
這些值等於:Medic_number,姓氏,專業,出生日期,大學,工資和Medic_type(我添加的新列)。 我在除最后一列之外的所有列上添加的數據並不重要,但是必須在以下條件下填充最后一列:
-默認情況下,它將是“ indiferente”(正在運行)。
-如果醫務人員在以-a結尾的大學(即瓦倫西亞)學習,它將說“非常好”。
-如果醫生年滿40歲或以上,則會顯示“專家”字樣。
現在,我知道如何執行這些條件了(例如,“ ... University like ='%a'”等),但是我不知道如何將其添加到INSERT指令中。 到目前為止,這是我得到的:
insert into medicos values ('A021', 'Apellidos :D', 'Loquesealogia', '1970-03-14', 'Valencia', '3500');
除了最后一欄,這就是我迷失的那一欄。 我可以做什么來告訴INSERT指令,根據前面提到的哪個條件為真,添加一個值或另一個值?
我希望我已經足夠清楚了,我不會說英語,所以如果這還不夠好,我感到抱歉。 另外,我這次嘗試格式化代碼,希望可以。
謝謝。
當我們需要在插入記錄之前對列值應用邏輯時,似乎是這種情況。 我建議在此表上創建一個BEFORE INSERT trigger
,該BEFORE INSERT trigger
將在插入每條記錄之前由MySql自動執行。
我們可以編寫邏輯以根據為其他列提供的值來確定最后一列的值。 請看此鏈接以獲取觸發器示例。
如果這里的要求是一次性批量插入,那么一旦插入完成,我們就可以刪除該觸發器。
我建議您按照Darshan Mehta的建議,使用INSERT觸發器之前執行此操作,或者在編程端執行邏輯,或使用存儲過程。
仍然可以在查詢時執行,因此要具體回答您的問題,請嘗試如下操作:
INSERT INTO medicos (num_colegiado, apellidos, especialidad, fecha_nac, universidad, sueldo, tipo_medico) SELECT 'A021', 'Apellidos :D', 'Loquesealogia', '1970-03-14', 'Valencia', '3500', IF('Loquesealogia' like '%a','Excellent',IF(DATE_ADD('1970-03-14', interval 40 YEAR)>NOW(),'Expert','indiferente'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.