mysql - 如何根据 MySQL 中的条件创建新列并向其添加值?
问题描述
alter table marks
add divisible_by_tenvarchar(50) default 'null'
SELECT marks, divisible_by_ten, IF(marks %10 =0 , "yes", "no");
这段代码
我试过上面的代码,肯定有错误。有两列studentID和marks。我需要按学生 ID 顺序排列它们,还需要创建一个新列,如果分数可被 10 整除,则说“是”或“否”。
解决方案
只需先这样做:
alter table marks add divisible_by_ten char(3);
然后,更新其中的数据:
alter table marks add divisible_by_ten char(3);
update marks
set divisible_by_ten = case when marks % 10 = 0 then 'yes' else 'no' end;
例子
create table marks (marks int);
insert into marks values (10), (11);
alter table marks add divisible_by_ten char(3);
update marks
set divisible_by_ten = case when marks % 10 = 0 then 'yes' else 'no' end;
select * from marks;
结果
标记 | 可除以十 ----: | :--------------- 10 | 是的 11 | 不
见:https ://dbfiddle.uk/?rdbms=mysql_5.6&fiddle=85e32cde86e13e05bf2c1fdaa3fbdf7e
备用
您实际上不必创建一个字段来存储该可分割信息。如果标记发生变化,您将不得不手动或以编程方式更新可分割列,或在表上放置触发器。
相反,不要添加可分割的列。只需创建一个视图。
create view marks_10 as
select
marks,
case when marks % 10 = 0 then 'yes' else 'no' end as divisible_by_10
from marks;
然后,您可以随时调用视图以获取新数据以及 divisible_by_10 动态列,如下所示:
select * from marks_10;
例如:https ://dbfiddle.uk/?rdbms=mysql_5.6&fiddle=4370997be4c64fd89908f8f35fe95fda
推荐阅读
- tableau-api - 如何在 Tableau 仪表板上创建响应式布局?
- netsuite - Netsuite 打印个人声明
- java - Axon - SubscribingEvent 与 TrackingEvent 处理器
- spring-boot - 有没有办法在使用 Spock 框架时使用 @MockBean 注释
- java - 如何将用户信息从数据库添加到“inMemoryAuthentication”
- python - 在“............”之前提取字符串
- ruby-on-rails - 查询以通过关联从 has_many 检索对象
- node.js - 在我的服务器上的 Docker 容器中运行 Node-Red - 在哪里存储数据文件 (csv)?
- android - 在布局xml中禁用Android EditText时如何将文本样式显示为粗体?
- spring-integration - 配置 Spring 集成。错误处理任务执行器