簡體   English   中英

如何根據 MySQL 中的條件創建新列並向其添加值?

[英]How to create a new column and add values to it based on a condition in 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;

結果

標記 |  divisible_by_ten ----: |:---------------- 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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