SQL查询 - 受另一个不同数据类型的SQL查询限制
问题描述:
我需要一些帮助。我有一个查询,我需要做的工作,但我需要通过另一个查询的结果来限制它。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)
任何帮助,将不胜感激。
答
如果可能,应该更改数据库模式。通常,在关系数据库中存储逗号分隔列表并不好。
但是,如果这是不是一种选择,这是一个使用一个方式join
与like
:
select *
from dbo.Tables t
join dbo.SecondTable st on ', '+t.ItemNums+',' like '%, '+st.ItemNumId+',%'
这样可以将逗号来开始和itemnums
的结束,以确保您只匹配具体ids
。
答
我个人会建议正常化你的dbo.tables。 这将是更好,因为:
ItemID ItemNums
1 1
1 4
1 5
2 1
等
然后就可以使用了连接或子查询中拉出来,在一些列表ItemNums行。
否则,这将是一团糟,不是很快。
感谢您的帮助。在这种情况下修复结构是最好的选择,因为ItemNums字段中可能有数百个项目。 – Xerc