我的数据库中的两个表中有这样的东西
“用户”表
userId viewsIDS
1 1,2,3,4,5
2 2,4,6,12,13
3 1,4,5
... ...
“查看”表
viewID webpageId
1 1
2 1
3 2
4 3
5 3
6 3
... ...
现在,我应该使用哪个查询来查找只有网页ID的用户ID?
我想应该以某种方式从“View”表中对“viewIDs”进行分组,然后检查其中一个ID是否在User“viewIDS”字段中,以便取出userID,但我不知道哪个查询会使更好的方式。
答案 0 :(得分:1)
你可以试试这个:
CREATE TABLE #USER (userId INT, viewsId VARCHAR(50))
CREATE TABLE #VIEW (viewId INT, webPageId INT)
INSERT INTO #USER
SELECT 1, '1,2,3,4,5'
UNION SELECT 2, '2,4,6,12,13'
UNION SELECT 3, '1,4,5'
INSERT INTO #VIEW
SELECT 1,1
UNION SELECT 2,1
UNION SELECT 3,2
UNION SELECT 4,3
UNION SELECT 5,3
UNION SELECT 6,3
SELECT u.userId, v.webPageId FROM #USER u
CROSS APPLY fnSplitString(viewsId, ',') s
INNER JOIN #VIEW v ON s.splitdata = v.viewId
ORDER BY u.userId
我将这个函数 fnSplitString 复制到:
但正如之前所说,你应该规范你的表;)