在mysql中创建一个新列作为两列之间的差异

时间:2017-03-08 12:53:54

标签: mysql

我想知道我是否可以在mysql表中创建一个新列作为两列之间的区别

我试过这个

cursor.execute("ALTER TABLE options_20161229 ADD daysuntillexpiration INT(6)" )
cursor.execute ("INSERT INTO options_20161229 (daysuntillexpiration) VALUES ('Expiration-Datadate')")

然而,这是错误的语法。

任何想法,请。 非常感谢

1 个答案:

答案 0 :(得分:1)

使用virtual column

  

从MySQL 5.7.6开始,CREATE TABLE支持规范   生成的列。生成列的值从a计算   表达式包含在列定义中。

ALTER TABLE Expiration-Datadate ADD daysuntillexpiration INT AS (Expiration-Datadate)

现在你甚至不需要插入,因为mysql会动态计算列数据并为你提供结果

如果您使用的是旧版本的mysql,则可以使用CREATE VIEW获得相同的效果

 CREATE VIEW myview AS SELECT *, Expiration-Datadate as d from  mytable