我少了一个应是这样:
UPDATE tableA a SET (a.col1,a.col2)=(SELECT b.col1,b.col2 FROM tableB b WHERE b.col3=a.col3 AND rownum<2) where ......

解决方案 »

  1.   

    SELECT a FROM
          (SELECT id a, 1 b FROM `account` UNION
           SELECT 'china' a, 0 b FROM `account` WHERE NOT EXISTS
                   (SELECT id a, 1 b FROM `account`)) AS t ORDER BY b
    (select 'china' from `account` where not exists (
           select * from `account`)) union
            (select id from `account`where id > all (
           select 0 from `account`)) 这是Q友给我的两个方案记下来然后再看看
      

  2.   

    给你一个参考代码 自己去调适去吧 嘻嘻 记得给我分先SELECT DECODE(需要检测的数据,等于的值,如果等于该值那么输出的值,如果不等于该值那么输出的值) from table.这样应该就可以了.
      

  3.   

    baidu知道有人给出了别一种思路,但不行,他的思路如下:
    UPDATE tableA a
    SET (a.col1,a.col2) = (SELECT NVL(b.col1, 'china'),NVL(b.col2, 'china') FROM tableB b WHERE b.col3(+) = a.col3 AND rownum = 1) WHERE ......
    地址是:http://zhidao.baidu.com/question/2374944.html
      

  4.   

    我在数据库内就直接写入null了...不填什么'china'了,显示china在显示时判定
      

  5.   

    原update语句是这样:
    UPDATE tableA a SET (a.col1,a.col2)=(SELECT b.col1,b.col2 FROM tableB b WHERE b.col3=a.col3) where ......现在的情况是当子查询:SELECT b.col1,b.col2 FROM tableB b WHERE b.col3=a.col3没有查到结果时这条记录没有不会更新-------------没有查到结果时这条记录没有不会更新,这个跟自字查询没有关系,而跟你省略掉的where ......有关系。按照你新发的贴子,只要把那个where ......去掉就可以了