当我将查询从默认浮点转换为小数点时,我的SQL语法中有一个错误 [英] I have an error in my SQL syntax when I convert the query from default floating-point to decimal point

查看:5
本文介绍了当我将查询从默认浮点转换为小数点时,我的SQL语法中有一个错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用PHP和MariaDB我的知识相当不错。我100%运行MariaDB的知识是堆栈溢出和谷歌以及在线课程。我在谷歌上搜索了两个小时来解决这个问题,转换成小数点。发现了这一点。使用其中的1个"AS DECIMAL(8,5)"或"DECIMAL(8,5)"将其转换为DECIMAL,这些选项对我都不起作用。

表中的所有百分比列都是小数(8,5)。我在谷歌上读到你在运行SQL查询时默认的浮点数太多了。我的问题是我不知道如何转换为小数(8,5),我需要100%的准确率。

我有下面的表和下面的SQL查询。你能教我怎么把它转换成十进制吗?

我已缩短表名以使其看起来更好。

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


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

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%的准确率。没有数据类型可以存储,例如,88。(3)这是88⅓-请参阅最后一把小提琴。

PPS。列名取自示例数据。

这篇关于当我将查询从默认浮点转换为小数点时,我的SQL语法中有一个错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆