我正在学习MySQL,所以我对这些东西都有点新意,但是上次我问过你们,你们确实很有帮助,所以也许你们可以再次帮助我,因为我没有&# 39;我自己能够找到答案。
好的,事实是,我需要在已经存在的表中添加一个新列,它应该是这样的:
ALTER TABLE `medicos`
ADD COLUMN `tipo_medico` VARCHAR(20) NOT NULL DEFAULT 'indiferente' AFTER `sueldo`;
现在我应该运行一个INSERT指令来添加数据。添加该列后,表格如下所示:
这些值等于:Medic_number,姓氏,专业,出生日期,大学,工资和Medic_type(我添加的新专栏)。我在除最后一列之外的所有列上添加的数据并不重要,但必须在下一个条件之后填写最后一列:
- 默认情况下,它是" indiferente" (那是在工作)。
- 如果一名医生在一所以-a结束的大学(即瓦伦西亚)学习,它会说"优秀"。
- 如果医生年龄在40岁或以上,它会说"专家"。
现在,我知道如何做这些条件(" ...大学喜欢='%a'"等),但我不知道如何将其添加到INSERT指令中。这是我到目前为止所得到的:
insert into medicos values ('A021', 'Apellidos :D', 'Loquesealogia', '1970-03-14', 'Valencia', '3500');
除了最后一栏之外,它还添加了所有内容,这是我失去的那一栏。我该怎么做才能告诉INSERT指令,根据之前命名的条件是真的,添加一个值或另一个值?
我希望我已经足够清楚了,我不是母语为英语的人,所以如果这还不够好,我很抱歉。此外,我这次尝试格式化代码,我希望能够正常工作。
感谢。
答案 0 :(得分:1)
当我们需要在插入记录之前对列值应用逻辑时,似乎就是这种情况。我建议在这个表上创建一个BEFORE INSERT trigger
,在插入每个记录之前,它将由MySql自动执行。
我们可以编写逻辑来确定最后一列的值,具体取决于为其他列提供的值。请查看触发示例的this链接。
如果这里的要求是进行一次批量插入,那么我们可以在插入完成后删除此触发器。
答案 1 :(得分:1)
我建议你使用Darshan Mehta建议的BEFORE 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'))