簡體   English   中英

[MySQL]根據條件插入值

[英][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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM