MySQL 5.7 GENERATED ALWAYS 列定义为子查询

标签 mysql sql innodb dynamically-generated

我似乎找不到我的查询的问题。我有四张 table :

  • agency_info
  • equipment_taken
  • equipment_weight
  • mission_overview

在mission_overview中有一个列totalWeightInKG,我想通过选择equipment_taken.qty(这是INT)和equipment_weight.equipWeightInKG来计算它code> (即 FLOAT),然后将它们相乘。

到目前为止,我有此列定义:

FLOAT GENERATED ALWAYS AS (SELECT qty, equpWeightInKG, (qty*equpWeightInKG) AS totalWeightInKG FROM equipment_taken, equipment_weight) STORED ;

我无法理解它...阅读有关 SELECT 查询和联接的文档,但似乎仍然无法提出正确的查询...

最佳答案

https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html说:

Subqueries, parameters, variables, stored functions, and user-defined functions are not permitted.

要执行您想要执行的操作,您必须在 INSERT 之前和 UPDATE 之前编写触发器来查询其他表并填充 float 列。

关于MySQL 5.7 GENERATED ALWAYS 列定义为子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40657727/

相关文章:

MYSQL 查询时间间隔计数

sql - 使用按位函数查询 BIT 字段时,MySQL 不使用索引

php - mysql_fetch_array 从一个简单的表中返回 0

php - DELETE FROM 不起作用(mysql)

mysql - 我可以在一个数据库中使用 InnoDB 和 MyISAM 表吗?

php - 无法完成交易;超过锁等待超时;尝试重新启动事务

mysql - 如何删除 RDS 中的孤立表

mysql - 如何使用单个查询获取最后更新的行

mysql - SQL 给出错误,即使看起来是正确的

mysql - 如果表不存在则创建表,如果表存在则在创建之前删除表之间有什么区别?