初始状态 
         订单表:price=0,cost(总额)=0,quality=100,goods=实际商品名称
         价格表:etprice=12.5,goods = 实际商品名称
目的:    根据订单的商品名 取得 价格表里对应的 价格 赋值到 订单表的 price 
         然后根据订单表的 price和quality计算出总额cost
         
         (这是举个例子,不合理的思路不管,只看SQL语句)SQL:    update 订单表 a,价格表 b set a.price=b.etprice,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的?

解决方案 »

  1.   

    看不明白,你所说的现象似乎不太可能出现。这样,给出你的 create table , insert into 语句,和试验步骤,这样别人可以在自己的机器上再现你的问题以便分析。
      

  2.   

    ACMAIN_CHM你好,给你发了短消息...
      

  3.   

    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>
    你的例子,我无法运行!建议你自己先试一下。可以简化一下例子,无关的字段你可以删除。另外建议直接贴到贴子中,一天我只看一次消息。贴到贴子中,这样帮你的人也会多一些。