有两个字段
id             weight
123-321-JY         20
123-321            30
123-321-JG         40
123-321-JY1        20
123-321-JY-20      50
要将带‘—JY’,‘-JG’ 类后缀的另外四种的weight 更新到与123-321一样id             weight
123-321-JY         30
123-321            30
123-321-JG         30
123-321-JY1        30
123-321-JY-20      30最好一条sql实现sql.oracle报表数据库

解决方案 »

  1.   

    一张表 有很多的数据 表中有许多‘A-JY’,'A-JG' 之类的带后缀的ID,但相应的肯定有一个ID是A,要做的是把那些带后缀的Id(如‘A-JY’,'A-JG') 对应的weight赋予A所对应的weight
      

  2.   

    (A-JY,A-JG)这类有后缀的ID对应的weight 与A对应的weight 不一定相同 就是让那些带后缀的ID(A-JY,A-JG)对应的weight变得与A对应的一样
      

  3.   

    update table a
       set a.weight =
           (select distinct(b.weight) from table b where b.id='123-321')
     where (a.id instr(a.id, '-GY') > 0 or a.id instr(a.id, '-JG') > 0)
    没建表测试,
      

  4.   

    不知道是这样的意思吗?CREATE TABLE t_test
    (
           ID VARCHAR2(20),
           weight NUMBER(2)
    );ALTER TABLE t_test ADD PRIMARY KEY (ID);INSERT INTO t_test VALUES('123-321-JY', 20);
    INSERT INTO t_test VALUES('123-321', 30);
    INSERT INTO t_test VALUES('123-321-JG', 40);
    INSERT INTO t_test VALUES('123-321-JY1', 20);
    INSERT INTO t_test VALUES('123-321-JY-20', 50);COMMIT;SELECT * FROM t_test;UPDATE t_test SET weight = (SELECT weight FROM t_test WHERE ID = '123-321') WHERE ID LIKE '%-J%';
      

  5.   

    感谢上面两位的解答 有可能我还没表述清楚 ID并不只有那一种 可能还有‘123456—JY’,‘654321—JY’,而
    且后面的后缀并不一定是以‘J’开头,可能应该是【A-Z】间的,后缀长度也不一定的
      

  6.   

    SQL> variable id varchar2(10);
    SQL> exec :id:='123-321';
     
    PL/SQL procedure successfully completed
    id
    ---------
    123-321
     
    SQL> UPDATE t_test SET weight = (SELECT weight FROM t_test WHERE ID = :id) WHERE id like :id||'-%';
     
    4 rows updated
    id
    ---------
    123-321
     
    SQL> select * from t_test;
     
    ID                   WEIGHT
    -------------------- ------
    123-321-JY               30
    123-321                  30
    123-321-JG               30
    123-321-JY1              30
    123-321-JY-20            30
      

  7.   


    不好意思 可鞥是我开始的提问没有说清楚 在表中 你并不能简单的认定谁是那个ID,我自己开始的想法是先把表中带的后缀都截掉后放入一个临时表(不是后缀的临时表) 并根据源表更新临时表的weight值 但是现在我没法将weight更新到源表,而且我的思路貌似有些繁琐 所以想请教一下各位高人