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

I have an error in my SQL syntax when I convert the query from default floating-point to decimal point

使用 PHP 和 MariaDB 我的知识相当丰富。我在 运行ning 100% MariaDB 方面的知识是堆栈溢出和 Google 以及在线课程。我在谷歌上搜索了 2 小时如何解决这个转换为小数点的问题。发现使用这 2 个“AS DECIMAL(8,5)”或“DECIMAL(8,5)”中的 1 个来转换为十进制none 这些对我有用。

table中的所有百分比列均为小数(8,5)。当您 运行 时,我在 Google 上读到一个 SQL 查询默认值太浮点。我的问题是我不知道如何转换为 decimal(8,5),我需要 100% 的准确性。

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

我缩短了 table 个名字以使其看起来更好。

Table

1_player 2_player 3_player id1_TA id2_TA id3_TA avg_TA
2 16 30 85.00000 100.00000 100.00000 100.00000
10 9 9 100.00000 100.00000 100.00000 100.00000
11 2 15 100.00000 85.00000 100.00000 100.00000

代码

UPDATE test 
SET `avg_TA_percent` = (`id1_TA_percent` + `id2_TA_percent`+ `id3_TA_percent`) / 3
WHERE `id1_TA_player` = 2 || `id2_TA_player` = 2 || `id3_TA_player` = 2;

感谢您的帮助。

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=f001d75383c039a293055d58c2499550


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

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=bf086aafc164ec82aaef717ee6d07707

PS。不可能达到 100% 的准确率。 None 数据类型可以存储,例如,88.(3) 即 88⅓ - 请参阅最后一个 fiddle.

PPS。列名取自示例数据。