首页 > 解决方案 > SQL 语句只取 id 小于 6 位的 MYSQL

问题描述

我试图了解为什么会发生这种情况,但我在互联网上找不到任何东西。我有一张药物表(称为 Medicamento),其中包含 23600 个元素。当我尝试使用 IdMed 列获取元素时,它只获取少于 6 位的值。
示例 1:

SELECT * FROM `Medicamento` WHERE IdMed=100 

在此处输入图像描述

示例 2:

SELECT * FROM `Medicamento` WHERE IdMed=200703 

在此处输入图像描述

在这一点上,我认为没有创建具有该 ID 的 med,所以我做了最后一个查询,这让我不知道错误在哪里:

SELECT * FROM `Medicamento` WHERE IdMed>200702 

结果: 在此处输入图像描述

如您所见,第一个元素是 ID 为 200703 的元素。我无法理解的是为什么它需要 ID 为 12700 或 100 的元素,但它不接受 ID 为 6 个数字的元素。我认为这可能是格式问题,但我没有发现任何帮助。

该表的数据取自 2 个不同的 .xlsx 文件,这就是我考虑格式的原因。

PD:对不起我的英语不好。我希望问题得到理解。

编辑:表数据类型 在此处输入图像描述

标签: mysqlsqldatabase

解决方案


简而言之,您的价值正在失去精度,因为您使用了不准确的数据类型。 float用于浮点数,理想情况下通常不应用作主键。您最好的选择是将其更改为integer数据类型。从评论的角度来看,这可能不可行,您最好创建另一列并将其用作主键。例如,可能发生的情况是,它可能以or200703的形式存储在数据库中,并且您正在搜索与数据库存储它的方式不完全匹配的值。200703.0000012007002.99999

作为建议,您可能希望将当前float列更改为double列,而不是在小数点后保留更多的精度。


推荐阅读