有两个表,一个叫工票价格表 AS A,一个叫计件工资表 AS B
表A中的字段为:
ID      产品名      工序名          工价
1       000001       粗磨           0.1
2       000001       精磨           0.15
3       000002       精磨           0.2
4       000003       清洗           0.3
5       000004       粗滚           0.4
6       000005       精滚           0.5
7       000006       细道           0.6
8       000007       粗道           0.7表B为:
ID      产品名      工序名1         工价1        工序名2       工价2
1       000001       粗磨                         精磨
2       000001       粗磨
3       000003       清洗      现在怎么得到工序1或者工序2的工价?表B是根据表A的产品和工序获得工价的
我自己写了一个脚本是:
UPDATE B
SET 工价1 =
          (SELECT A.工价
         FROM A, b
         WHERE A.产品名 = B.产品名 AND A.工序名 = B.工序名1), 工价2 =
          (SELECT A.工价
         FROM A, b
         WHERE A.产品名 = B.产品名 AND A.工序名 = B.工序名2)
但在运行的时候出现错误:子查询返回的值多于一个。当子查询跟随在=、!=、<、<=、>、>=之后,或子查询用做表达式时,这种情况是不允许的。

解决方案 »

  1.   

    使用:--参考:
    update B set B.工价1  = A.工价 from  A,B A.产品名 = B.产品名 AND A.工序名 = B.工序名
      

  2.   

    我根据你的思路写了下面这段:
    UPDATE B
    SET 工价1 =
              (SELECT DISTINCT A.工价
             FROM A, b
             WHERE A.产品名 = B.产品名 AND A.工序名 = B.工序名1 AND 
                   b.工序名1 IS NOT NULL), 工价2 =
              (SELECT DISTINCT A.工价
             FROM A, b
             WHERE A.产品名 = B.产品名 AND A.工序名 = B.工序名2 AND 
                   B.工序名2 IS NOT NULL)
    但是这样的结果是:
    ID 产品名         工序名1        工价1 工序名2         工价2
    1 000001     粗磨       0.1 精磨       0.15
    2 000001     粗磨       0.1         0.15
    3 000003     清洗       0.1         0.15
    这是为什么?