今天看到一个语句
- SQL code
UPDATE (SELECT * FROM RPT_E_CORPINFO_DAILY WHERE DAY_ID = 20090101) RSET R.CITY_ID = (SELECT D.CITY_ID FROM DIM_E_CITY D WHERE R.CITY_ID=D.E_CITY_ID OR R.CITY_ID=D.CITY_ID)
这个语句是不是和
- SQL code
update RPT_E_CORPINFO_DAILY RSET R.CITY_ID = (SELECT D.CITY_ID FROM DIM_E_CITY D WHERE R.CITY_ID=D.E_CITY_ID OR R.CITY_ID=D.CITY_ID)WHERE R.DAY_ID=20090101
是等同的?
------解决方案--------------------------------------------------------
是等同的
------解决方案--------------------------------------------------------
一般以第二种可靠。第一种这种写法很少见,并且有一些限制。
------解决方案--------------------------------------------------------
第二种我用过,是借用临时表进行数据处理
为了稳妥起见,你还是在第二个语句括号里面加上 fetch first 1 rows only 吧
以免可能出错。