我少了一个应是这样:
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 ......
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 ......
(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友给我的两个方案记下来然后再看看
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
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 ......去掉就可以了