1
我在查詢中有4個表。 表A 表B 表C 表D.TSQL執行點
表d包含查找有關表B. 值我已經結構化查詢如下:
Select a.Col1, a.Col2, b.Col1, b.Col2, c.Col1
from [Table A] a
inner join [Table C] c
on c.key1= a.key1
and c.key2 = 'static value'
inner join [Table B] b
on b.key1 = a.key1
and b.key2 = 'static value'
**and b.key3 in (select d.key1
from [Table D] d)**
and substring(b.key4, len(b.key4), 1) in ('static value 1', 'static value 2')
and substring(b.key4, 1, len(b.key4)-1) in c.key1
所以出現在我的問題加入[表B]。具體來說,將b.key3加入值列表。由於我得到了無效的結果,因此在執行連接之後SQL似乎執行了表D的查詢。現在,如果我提供'在'具體值的表D的查詢將返回。它運行沒有問題,併產生有效的結果。
有人可以澄清這個查詢的執行是如何工作的,因爲它涉及到總查詢,如果遇到這個問題,還可能有一個解決方法嗎?
感謝
我看到你在那裏做了什麼,這是有道理的。但是,我試圖實現這一點,並遇到了同樣的問題。發生什麼事情是當這行執行時,我得到文本的轉換錯誤爲int。和c.key1中的子字符串(b.key4,1,len(b.key4)-1)。 c.key1是所有整數。當子字符串執行時,b.key4應該是整數。表D中的值的查詢/連接應該消除那些將這些值渾濁起來的值。有效值是214y,113q,667y。但由於某種原因,與表B的連接不會過濾掉無效值。感謝您迄今的努力。 – user1186256
嗨,我不完全確定我理解你遇到的問題,我會在比較不同的數據類型時檢查你是否正在轉換你的值,也可以先在CTE中執行子字符串並消除任何不是INT的值。 – Suroh