mysql 更新查询问题,更新了0行,而本应有1行,HeidiSQL

gr8qqesn  于 2023-10-15  发布在  Mysql
关注(0)|答案(2)|浏览(163)

我有一张这样的table:

ALTER TABLE `MW_Locations`  CHANGE COLUMN `ID` `ID` INT(20) NULL DEFAULT NULL FIRST,    CHANGE COLUMN `UDID` `UDID` INT(20) NULL DEFAULT NULL AFTER `ID`,   CHANGE COLUMN `IDACCOUNT` `IDACCOUNT` INT(20) NULL DEFAULT NULL AFTER `UDID`,   CHANGE COLUMN `Name` `Name` VARCHAR(50) NULL DEFAULT NULL AFTER `IDACCOUNT`,    CHANGE COLUMN `Lat` `Lat` DOUBLE NULL DEFAULT NULL AFTER `Name`,    CHANGE COLUMN `Lon` `Lon` DOUBLE NULL DEFAULT NULL AFTER `Lat`,     CHANGE COLUMN `IDMWDevice` `IDMWDevice` INT(50) NULL DEFAULT NULL AFTER `Lon`,  CHANGE COLUMN `Desc` `Desc` VARCHAR(50) NULL DEFAULT NULL AFTER `IDMWDevice`,   CHANGE COLUMN `IDAction` `IDAction` INT(20) NULL DEFAULT NULL AFTER `Desc`,     CHANGE COLUMN `Status` `Status` VARCHAR(50) NULL DEFAULT NULL AFTER `IDAction`,     ADD PRIMARY KEY (`IDACCOUNT`);

问题是我不能做任何更新。就像这个:

UPDATE `MW_Locations` SET `IDACCOUNT`=1 WHERE  `ID`=0 AND `UDID`=0 AND `IDACCOUNT`=0 AND `Name`='Panteon' AND `Lat`=25.6789521128695 AND `Lon`=100.336310863495 AND `IDMWDevice`=0 AND `Desc`='' AND `IDAction`=0 AND `Status`='' LIMIT 1;

我使用heidisql连接到一个服务器的行,我做了这些:

我想让所有行的列IDACHALL的值为“1”,所以它将被分配给用户1在我的数据库中,稍后带来了一个JSON的数据数组,使一些任务。我也想使ID递增,但它也给我带来了错误。

5kgi1eie

5kgi1eie1#

此查询失败,因为您要求DOUBLE字段LatLon完全相等。不需要这些列来标识您的行。重写您的sql语句,

UPDATE `MW_Locations` 
   SET `IDACCOUNT`=1 
 WHERE `Name`='Panteon';

此列中的此值足以标识您的行。
引用the MySQL manual
由于浮点值是近似值,不存储为精确值,因此在比较中将其视为精确值可能会导致问题。

iovurdzv

iovurdzv2#

还要检查更新时是否有该表的触发器。如果试图SET的字段是由更新时的触发器计算的,则始终会收到该错误,并且永远不会更新。

相关问题