我想弄明白为什么会发生这种事,但我在网上找不到任何东西。我有一张有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个数字的元素。我认为这可能是格式问题,但我没有发现任何有用的东西。
表的数据是从两个不同的.xlsx文件中提取的,这就是我考虑格式的原因。
警察:对不起,我的英语不好。我希望大家能理解这个问题。
编辑:表数据类型

发布于 2018-07-03 14:49:37
简而言之,所发生的事情是,由于您使用的数据类型不准确,所以您的值正在丢失。float用于浮点数,理想情况下不应将其用作主键。您最好的选择是将其改为integer数据类型。从注释的外观来看,这可能是不可行的,您最好创建另一列并使用它作为主键。例如,在200703中,它可能以200703.000001或2007002.99999的形式存储在数据库中,您正在搜索一个与数据库存储方式不完全匹配的值。
作为建议,您可能希望将当前的float列更改为double列,以保持小数点以上的更高精度。
https://stackoverflow.com/questions/51157236
复制相似问题