2016-07-06 47 views
0

我需要一些幫助。我有一個查詢,我需要做的工作,但我需要通過另一個查詢的結果來限制它。SQL查詢 - 受另一個不同數據類型的SQL查詢限制

SELECT ItemID, ItemNums 
FROM dbo.Tables 

ItemNums是一個varchar字段,用於存儲各種項目號的字符串。

這產生以下。

ItemID  ItemNums 
1   1, 4, 5 
2   1, 3, 4, 5 
3   2 
4   4 
5   1 

我有了每個項目數量的INT,我需要用它來拉有關聯的ItemNums

像這樣的東西都ItemIDs另一個表。

SELECT * 
FROM dbo.Tables 
WHERE ItemNums IN (4,5) 

任何幫助,將不勝感激。

回答

1

如果可能,應該更改數據庫模式。通常,在關係數據庫中存儲逗號分隔列表並不好。

但是,如果這是不是一種選擇,這是一個使用一個方式joinlike

select * 
from dbo.Tables t 
    join dbo.SecondTable st on ', '+t.ItemNums+',' like '%, '+st.ItemNumId+',%' 

這樣可以將逗號來開始和itemnums的結束,以確保您只匹配具體ids

+0

感謝您的幫助。在這種情況下修復結構是最好的選擇,因爲ItemNums字段中可能有數百個項目。 – Xerc

0

我個人會建議正常化你的dbo.tables。 這將是更好,因爲:

ItemID  ItemNums 
1   1 
1   4 
1   5 
2   1 

然後就可以使用了連接或子查詢中拉出來,在一些列表ItemNums行。

否則,這將是一團糟,不是很快。