楼主,你说的1,4数据集我都 可以看到.如果这样改,就可以看到你的2,3数据集 SELECT T1.TurnNo,T3.IsNight as IsNight FROM @TEST T1 LEFT JOIN (SELECT TurnNo,3 IsNight FROM @TEST WHERE BCXZ=1) T3 ON (T1.TurnNO=T3.TurnNo) --注意BCXZ=1
有什么问题吗? (SELECT TurnNo,1 IsNight FROM TEST WHERE BCXZ=0) T3 本身就是一个空集! 无论1 IsNight 还是2 IsNight 都一样的是空集!一个集合 LEFT JOIN 一个空集! 第一个和第四个结果是正确的!那么楼主的第二三种结果在什么情况下得出的,SQL版本?补丁版本?
有的結果是(我認為是正常的):
TurnNo IsNight
--------------
T001 0
T002 0
T003 0
T004 0
T005 0
而有些電腦上的運行結果是:
TurnNo IsNight
--------------
T001 1
T002 1
T003 1
T004 1
T005 1
而且, 如果將 "1 IsNight"改為 "2 IsNight"的話, 上面的結果相應地變為
TurnNo IsNight
--------------
T001 2
T002 2
T003 2
T004 2
T005 2
如果將ISNULL(T3.IsNight,0)IsNight 改為 T3.IsNight的話, 而結果都是正確的,即:
TurnNo IsNight
--------------
T001 NULL
T002 NULL
T003 NULL
T004 NULL
T005 NULL
以上問題百思不得其解, 請高手們指點一二
SELECT T1.TurnNo,T3.IsNight as IsNight
FROM @TEST T1 LEFT JOIN
(SELECT TurnNo,3 IsNight FROM @TEST WHERE BCXZ=1) T3
ON (T1.TurnNO=T3.TurnNo)
--注意BCXZ=1
------ -----------
T001 3
T002 3
T003 3
T004 3
T005 3
我是沒有改變BCXZ為1的情況下, 在有的電腦上結果還是
TurnNo IsNight
--------------
T001 1
T002 1
T003 1
T004 1
T005 1
然而這是不正確的, 但錯誤原因就不得而知了
--------------
T001 1
T002 1
T003 1
T004 1
T005 1^_^
結果應該是
TurnNo IsNight
--------------
T001 0
T002 0
T003 0
T004 0
T005 0才對啊
不能正確返回的電腦也絕非偶然,因為我已遇到不止一台電腦有這個錯誤TO:huangjianyou(小健)
你電腦上返回的結果就是錯誤的,不信你分析分析SQL語句
(SELECT TurnNo,1 IsNight FROM TEST WHERE BCXZ=0) T3 本身就是一个空集!
无论1 IsNight 还是2 IsNight 都一样的是空集!一个集合 LEFT JOIN 一个空集! 第一个和第四个结果是正确的!那么楼主的第二三种结果在什么情况下得出的,SQL版本?补丁版本?
得出正確結果的電腦配置是:Windows 2000 SP4 (或Windows 2003)& SQL Server 2000 未打補丁,
得出錯誤結果的電腦配置也是相同的