繁体   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