mysql Update时候如何工作的?
初始状态
订单表:price=0,cost(总额)=0,quality=100,goods=实际商品名称
价格表:marketprice=12.5,goods = 实际商品名称
目的: 根据订单的商品名 取得 价格表里对应的 价格 赋值到 订单表的 price
然后根据订单表的 price和quality计算出总额cost
(这是举个例子,不合理的思路不管,只看SQL语句)
SQL: update 订单表 a,价格表 b set a.price=b.marketprice,a.cost=a.price*a.quality where a.goods = b.goods
上面这条语句
订单表里有两条记录时候,得出结果都是正确的,订单表的price和cost都是正确值
3条记录以上就错了:订单表里的cost结果为0,原因是a.cost=a.price*a.quality中的a.price为0,
但字段中a.price确有正确值的…
上面SQL的工作过程是怎样的? 是先逐个计算SQL里的参数,最后再update,还是逐个计算update的?
看不明白,你所说的现象似乎不太可能出现。
这样,
给出你的 create table , insert into 语句,和试验步骤,这样别人可以在自己的机器上再现你的问题以便分析。
-
SQL code
mysql> INSERT INTO `account` (`id`, `username`, `uid`, `basefund`, `moneyfund`, `kymoneyfund`, `totalfund`, `totalstockfund`, `totalbargainfund`, `totalprofitor lossfund`, `rate`, `dayrate`, `weekrate`, `monthrate`, `yearrate`, `dayrank`, `w eekrank`, `monthrank`, `yearrank`, `statupdatetime`, `createtime`, `matchid`, `a ccountcode`, `accounttype`, `accountlimits`, `bargainlimits`) VALUES -> (39, '测试用户', 1, 100000.00, 86948.00, 45181.60, 894728.00, 807780.00, 13000.00, 794728.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1270135562, 0, '1-0', 1, '0', NULL), -> (40, '测试用户', 1, 10000000.00, 8564280.00, 8564280.00, 9204780.00, 6405 00.00, 1430000.00, -795220.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0, 0, 0, 0, 0, 1270 136442, 3, '1-3', 2, '0', NULL); ERROR 1054 (42S22): Unknown column 'rate' in 'field list' mysql>