假設有2個表,分別是A表和B表,A表有2列,A1,A2,B表有2列A2,B1,A有4列,B有2列
我查詢的時候需要已A表
select a.*,isnull(b.bCheck,0) bCheck
from A
left join (select b.A2,bCheck=1 from B) as b on b.A2=A.A2
這樣的查詢陳述句,在SQL2000和2008中結果都是一致的,bcheck那一列都是0,1,1,0的結果
但是我在VB6.0中取得回傳結果的時候,就不同了,當資料庫是2000的時候是正常的,資料庫換回2008的時候,bcheck那一列都是1,1,1,1的結果了。VB都用的ADODB的連接
求教,為什么會出現這個結果,和如何解決
uj5u.com熱心網友回復:
將 bCheck=1 換成 1 As bCheck 試試。后者比較符合SQL規范。
uj5u.com熱心網友回復:
試過了,效果沒有什么變化,
我換了個寫法
select a.*,bcheck=(case when b.A2 is null then 0 else 1 end) bCheck
from A
left join b on b.A2=A.A2
這樣寫之后,效果就是對了的。只能算是避過錯誤吧。前面錯誤的原因還是不解
uj5u.com熱心網友回復:
SQL 命令是傳字串到資料庫引擎的。你 SQL 陳述句的語法必須與當前當前版本的資料庫引擎兼容,也就是使它能夠正確地決議。不同的資料庫引擎,甚至不同版本,所支持的內部命令或格式可能是不同的。
uj5u.com熱心網友回復:
不同的資料庫引擎,甚至不同版本,所支持的內部函式或格式可能是不同的。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/118116.html
上一篇:WIN8 64位下 VB6的 datareport 無法使用,請問如何解決
下一篇:別人共享的軟體如何獲取密碼?
