首页 > 解决方案 > 如何从视图的列是 IFNULL(1/0, 0) 的视图中插入表?

问题描述

我的环境:

MariaDB 10.3.10

我创建了一个表 pe:

CREATE TABLE pe (
  id int(11) NOT NULL AUTO_INCREMENT,
  weight int(11) DEFAULT NULL,
  height int(11) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

id, weight, height
1, 63, 172
2, 62, 173
3, null, null
4, 60, null

并创建一个视图 pe_view:

CREATE VIEW pe_view AS
SELECT
weight, height, IFNULL(FORMAT(weight/height/height*10000, 2), 0) AS bmi
FROM pe;

然后创建一个表 pe_per_year:

CREATE TABLE pe_per_year (
  id int(11) NOT NULL AUTO_INCREMENT,
  weight int(11) DEFAULT NULL,
  height int(11) DEFAULT NULL,
  bmi double(5,2) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

现在,我想从 pe_view 插入到 pe_per_year。我用:

INSERT INTO
pe_per_year(weight, height, bmi)
SELECT weight, height, bmi
FROM pe_view;

它告诉我“除以零”。请问我有什么问题吗?以及如何将一些 IFNULL(1/0, 0) 数据插入到 double(5,2) 中?

标签: mysql

解决方案


推荐阅读