问题描述
称为test的表具有列:
person_id(唯一)和special_num
表格:
结果:
想创建一个名为div的新列,以确定哪个人获得的special_num可以被10整除,而哪个人不是true还是false则希望是或否。
我是MysqL的新手,从没尝试过,但是给了我一个机会,请告诉我如何获得它:
SELECT * FROM test WHERE special_num % 10 = 0 AS div from test;
我无法弄清楚如何输入值以及这是否是正确的方法
解决方法
如果您要使用列,则它会放在select
中:
select t.*,( (special_num % 10) = 0) as div
from t;
,
您需要一个CASE
表达式:
SELECT *,CASE WHEN special_num % 10 = 0 THEN 'Yes' ELSE 'No' END AS `div`
FROM test
,
这里是my SQLFiddle来模仿这个问题。
第一步是通过更改表来创建新列。
ALTER TABLE PERSONS
ADD is_special VARCHAR(3);
现在运行UPDATE查询,以检查special_num % 10
是否为零,如果为零,则将is_special
设置为yes
。
UPDATE PERSONS SET is_special = CASE WHEN special_num % 10 = 0 THEN 'yes' ELSE 'no' END;
话虽如此,存储从其他字段得出或计算的值是一个坏主意。您可能要在视图中而不是表中使用它。