2015-09-14 67 views
-1

運行我查詢後存儲SQL查詢結果(1根)我收到1個結果爲作爲陣列

5 
6 
98 
101 

是否有這樣的結果存儲爲陣列,這樣我可以在查詢後使用它 方式像

WHERE NOT IN ('5','6','98','101') 

我知道存儲單個變量的結果,但這可能嗎?

我不能使用@Table變量,我會在以後再次重新運行查詢,並將其超出範圍

+2

一個快速的解決方法將XML存儲在某處,然後WHERE NOT IN(SELECT tcvalue('...','type')as name FROM somewhere.column.nodes(tc)'解析它 – lad2025

+0

是嗎?有多行值的單個字段?或者查詢是否返回多行? – fthiella

+0

同意使用XML。無論採用哪種方式,您都要執行拆分字符串和Stuff,它依賴於XML。只需使用原始的XML –

回答

0

有存儲喜歡用Temporary TablesViewTable valued function但IMO那些列數據的多路不需要將該列數據存儲在任何地方。可以直接使用該列中的任何查詢以下稱(或)執行JOIN這將是更好的選擇比NOT IN

select * from 
table2 
where some_column not in (select column1 from this_table); 
+0

不會真的爲他想要做的工作http://stackoverflow.com/questions/32570162/can-table-variables-stored在過去的SQL服務器 –

+0

正如我實際上計劃存儲我的數組供以後使用一段時間後。在你的代碼中,table2只是this_table的更新版本。因此它不會工作 – user2961712

0

雖然這種方法是推薦的,存儲在單個列中的陣列可以是使用CSV(逗號分隔值)完成。只需創建一個VARCHAR數組並通過以特定順序存儲包含這些值的字符串來存儲它。基本上將所有值存儲到一個字符串中,每個值在該字符串中以comma分隔。將其存儲到您選擇的列中。您可以稍後獲取字符串並使用字符串解析器解析它,即使用python中的.split()函數。 AGAIN我不建議這樣做,我會改爲使用多個列,一個引用每個值並以這種方式訪問​​它們 使用單獨的列將使其易於在Stored Procedure中使用。

+0

謝謝,但你有我可以參考的例子嗎?這有點複雜,我無法在網上找到信息 – user2961712