Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 错误与“;作为「;创建计算列时_Mysql_Sql - Fatal编程技术网

Mysql 错误与“;作为「;创建计算列时

Mysql 错误与“;作为「;创建计算列时,mysql,sql,Mysql,Sql,我正在尝试建立一个医院就诊数据库,我想修改“就诊”表,并添加一个新列,显示患者用药的总成本(通过乘以费用(从表“用药”)*数量(从表“getsmed”)) 然而,我在MySQL workbench中编写了这段代码,但它不会运行,并且会在带有标题的world“as”下面一行(“as”在此位置无效,应为:BIT、BOOL、BOOLEAN、DATETIME、TIME、ENUM…) 在MySQL中,添加计算列时需要指定类型: alter table visit add total_charge

我正在尝试建立一个医院就诊数据库,我想修改“就诊”表,并添加一个新列,显示患者用药的总成本(通过乘以费用(从表“用药”)*数量(从表“getsmed”))

然而,我在MySQL workbench中编写了这段代码,但它不会运行,并且会在带有标题的world“as”下面一行(“as”在此位置无效,应为:BIT、BOOL、BOOLEAN、DATETIME、TIME、ENUM…)


在MySQL中,添加计算列时需要指定类型:

alter table visit
    add total_charge decimal(20, 4) as (Mcharge * Quantity);
但是,计算列只能直接引用同一行中的列值。它无法“伸出”到其他表。这给了您两个选择:

  • 使用用户定义的函数从另一个表中检索值
  • 使用视图而不是计算列
  • 我推荐第二种解决方案


    我实际上无法建议任何具体代码,因为您在问题中没有提供足够的信息。

    请查看并提供total_charge的数据类型,顺便说一句,您无法访问其他表或使用函数来访问。我不认为存储一个可计算列是件好事“存储函数和用户定义函数是不允许的”——我想你是说存储一个可计算列?
    alter table visit
        add total_charge decimal(20, 4) as (Mcharge * Quantity);