我有一张这样的表:
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连接到服务器 我所做的行是这些:
想要将IDACCOUNT列的所有行设置为值“1”所以它将被分配给我的数据库中的用户1,稍后将引入一个json数据数组来执行某些任务。另外我想要增加ID,但它也会给我带来错误。
答案 0 :(得分:1)
此查询失败,因为您要求DOUBLE
字段Lat
和Lon
完全相同。不需要这些列来标识您的行。将sql语句重写为
UPDATE `MW_Locations`
SET `IDACCOUNT`=1
WHERE `Name`='Panteon';
此列中的此值足以识别您的行。
我引用the MySQL manual:
因为浮点值是近似值而不是精确存储 价值,试图在比较中对待它们可能会导致 问题。