SQL的查询的奇怪问题(30分)

  • 主题发起人 主题发起人 LanHer
  • 开始时间 开始时间
L

LanHer

Unregistered / Unconfirmed
GUEST, unregistred user!
我的SQL以前是7.0的,我在存储过程中下面的语句正常,在2000下不能执行。为什么?
UPDATE #TempItemSC--临时表
SET Item_Name=I.Item_Name,
Item_CName=I.Item_CName,
FactoryCd=I.Factory_No
FROM ItemTable I,#TempItemSC T
WHERE T.Item_No=I.Item_No
 
是不是你的臨時表與表ItemTable字段在某些部分定義不同,以致報告說不能完成這個操作
 
不是的,在SQL 2000里面
select Field1,Field2
into #Temp1
from Table1

select Field3,Field4
into #Temp2
from Table2

select #Temp1.*,#Temp2.*
from #Temp1,#Temp2
where #Temp1.Field1*=#Temp2.Field3(关联的两个字段是相同的结构)
上面的语句会出错,为什么?
 
总是提示这样的错误:
Cannot resolve collation conflict for equal to operation.
 
select Field1,Field2
into #Temp1
from Table1

select Field3,Field4
into #Temp2
from Table2

select #Temp1.*,#Temp2.*
from #Temp1,#Temp2
where #Temp1.Field1*=#Temp2.Field3(关联的两个字段是相同的结构)
上面的语句会出错,为什么?

這是因為你的表Table1.Field1與Table2.Field3在數據庫裡的定義不同如為空默認值什麼的
這種問題我經常碰到,平均兩天一次,常用解決方法有:
Create #Temp1(Field1 varchar(50) Null,Field2 varchar(50) Null)
Create #Temp2(Field3 varchar(50) Null,Field4 varchar(50) Null)
insert into #Temp1
select Field1,Field2 from Table1

insert into #Temp2
select Field3,Field4 from Table2

select #Temp1.*,#Temp2.*
from #Temp1,#Temp2
where #Temp1.Field1=#Temp2.Field3

如果還不行的話,你直接將表Table1與Table2的值一起放在一張臨時表中
select a.*,b.* into #Temp from Table1 a , Table2 b where a.Field1=b.Field3
 
脚本生成SQL 7.0的,然后在SQL 2000里面建立就可以了!
 
接受答案了.
 
后退
顶部