2010-05-03 70 views
0

我有一組數字和id(主鍵)和text(非空)列的數據庫中的表。我想創建一個查詢,返回集合中的所有數字以及表中的相關文本。不幸的是在數據庫中的id列不存在的所有數字,所以這是行不通的:在數據庫中使用一組數字而不創建臨時表

select id, text 
from table 
where id in (<set of numbers>) 

對於不存在的IDS最好將返回null從查詢的文本。

有沒有辦法在沒有首先從數據庫內的集合創建臨時表的情況下產生所需的輸出?

正在使用的數據庫引擎是Microsoft SQL Server 2008 SP1,但我會對任何數據庫引擎的解決方案感興趣。

+1

爲什麼要避免創建臨時表?這似乎是對我來說最明顯的解決方案。 – RationalGeek 2010-05-03 16:23:17

+0

@jkohlhepp;它不一定是最好的解決方案,例如oracle可以通過雙向遞歸查詢生成序列號,該序列號可以更好地縮放然後物化版本。沒有關於MS SQL性能的數據。 – Unreason 2010-05-04 08:13:10

+0

Unreason給出了這個請求的確切原因 - 我會避免頻繁地創建非常大的表。 – Zizzencs 2010-05-04 09:14:39

回答

0

的解決方案是特定

  • MySQL有沒有什麼好辦法做到以上無需臨時表
  • 甲骨文可以做遞歸查詢(詳情here
  • MS SQL請求非常有效高度數據庫可以通過遞歸查詢來實現,但我不知道如何有效

檢查鏈接的文章並查看哪些查詢MS SQL 2008年支持和如何執行他們。

相關問題