奇怪的问题:mssqlserver中用union查询出的结果集只能修改部分?(200分)

  • 主题发起人 主题发起人 cabrite
  • 开始时间 开始时间
C

cabrite

Unregistered / Unconfirmed
GUEST, unregistred user!
我用union查询连接两个表,
select **,**,** from ××1 union select **,**,** from ××2
产生的结果集合,
我需要修改其中某个字段的值,
却奇怪的发现只能修改××1表,而涉及到××2表的都不能修改,
我将××1和××2换了个位置后,××2能被修改了,而××1却不能修改。
请问这是为什么,有什么好的办法可以满足我的要求吗?
我还是想用union语句,因为我需要消除结果集中重复的行。
 
这么多高手都没有碰到过这个问题吗?
 
可能是因为select俩个表形成的虚表只能改第一个表中的值
你可以将语句写成这样,然后用update 来修改
select **,**,** ,1 as flag from ××1 union select **,**,**,2 as flag from ××2
if flag =1 then update table1
else update table2
 
多表查询的修改本来就是有条件的。
 
union的结果应该是不好直接修改的,数据库原理中应该有说(具体我也不清楚 [:)]
不过我知道union的结果集中不会有重复的行啊?
所以‘我需要消除结果集中重复的行’,我不大明白。

跟robertcool学了一招
 
我懂robert的意思 ,
就是说去直接修改两个表,
而不是修改select的结果集,
我试试看。
 
直接修改表的方法复杂了点,还有没有更简单的呢?
 
接受答案了.
 
后退
顶部