将查询从默认浮点转换为小数点时,SQL语法出现错误



使用PHP和MariaDB,我的知识相当不错。我在运行100%MariaDB方面的知识是堆栈溢出、谷歌和在线课程。我在谷歌上搜索了如何在2个小时内解决转换为小数点的问题。发现这一点时,请使用其中2个">AS DECIMAL(8,5("或">DECIMAL"中的1个来转换为十进制,这些对我来说都不起作用

表中所有的百分比列都是十进制的(8,5(。我在谷歌上读到,当你运行SQL查询时,默认值太浮点。我的问题是我不知道如何转换成十进制(8,5(,我需要100%的准确性。

下面是表,下面是SQL查询。你能告诉我如何把它转换成十进制吗。

我缩短了表名,使它看起来更好。

id2_TAid3_TA>平均_TA85.000001.0000000<1000000>><1000000>
1-player 2-player id1_TA
2 16 301000000
10 9 10000001000000
11 2 15 100000085.00000100000
UPDATE test
SET avg_TA = (id1_TA + id2_TA + id3_TA) / 3
WHERE 2 IN (1_player, 2_player, 3_player);

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=47baf4517bf96643d6c2e16f5243fc42


或者您的意思是,现在您的列是FLOAT,您想更改数据类型并更新平均值?

ALTER TABLE test
MODIFY COLUMN id1_TA DECIMAL(8,5),
MODIFY COLUMN id2_TA DECIMAL(8,5),
MODIFY COLUMN id3_TA DECIMAL(8,5),
MODIFY COLUMN avg_TA DECIMAL(8,5);

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=f001d7583c039a293055d58c2499550


还可以考虑将静态平均值列更改为生成平均值列。在这种情况下,它将始终提供实际值,而无需重新计算:

ALTER TABLE test
MODIFY COLUMN id1_TA DECIMAL(8,5),
MODIFY COLUMN id2_TA DECIMAL(8,5),
MODIFY COLUMN id3_TA DECIMAL(8,5),
DROP COLUMN avg_TA,
ADD COLUMN avg_TA DECIMAL(8,5) AS ((id1_TA + id2_TA + id3_TA) / 3);

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=bf086afc164ec82aaef717ee6d07707

PS。要达到100%的准确度是不可能的。没有一种数据类型可以存储,例如88。(3(即88⅓ -看最后一把小提琴。

PPS。列名取自示例数据。

相关内容

最新更新