我怎么能在MySQL中做到这一点

时间:2014-04-10 16:39:08

标签: mysql sql database database-design

我有这张表,其中C = A + B;
在此之后:

CREATE TABLE foo (A INT, B INT, C INT);
INSERT INTO foo (A,B) values (1,2),(4,5);
SELECT * FROM foo;

结果如下:

A | B | C
--+---+----
1 | 2 | 3
4 | 5 | 9

如何对MySQL说创建表子句中C始终是C = A + B;
感谢你们;我将使用这个“SELECT A,B,A + B AS C FROM foo;”它看起来像我想要的那样工作。谢谢

5 个答案:

答案 0 :(得分:3)

不要在表格中使用C列,但在SELECT中使用计算列:

SELECT
    A,
    B,
    A + B AS C
FROM
    foo

答案 1 :(得分:2)

MySQL缺少您可以使用的两个功能:

  • 计算列(又名虚拟列)
  • 检查约束

所以你基本上离开了:

  • 编写触发器以对插入进行计算并在更新时更新
  • 撰写视图

除此之外,计算列也可以......好,按照其他答案指出的选择计算。通常不鼓励在数据库中存储重复信息,除非是非常具体的性能技巧。

答案 2 :(得分:1)

创建视图:

CREATE TABLE foo_data (A INT, B INT, C INT);
CREATE VIEW foo_ext AS SELECT A, B, (A+B) AS C FROM foo_data;
INSERT INTO foo_data (A,B) values (1,2),(4,5);
SELECT * FROM foo_ext;

答案 3 :(得分:0)

if your geting input from user 

$c = $_POST['a'] +$_POST['b'];
<p>
</p>
INSERT INTO foo (C) values ($c);

答案 4 :(得分:0)

从C中选择A,B,A + B作为C,像VMai一样回答