我有两张桌子:
Users
:
UserID(int) Username Password PagesID(varchar(50))
---------------------------------------------------------
1 admin 123 1,2,3,4
2 user 456 1,3
Pages
:
PageID(int) PageURL PageTitle
---------------------------------------------
1 article.aspx Articles
2 News.aspx News
3 reports.aspx Reports
4 Users.aspx Users
我想从user.
和pageURL
表中获取PageTitle
,pages
和Users
。
我需要查询相同的+用户信息: (此查询返回没有行的列。)
select p.PageURL
from Pages p
where CONVERT(Varchar(50), p.PageID) in (select u.PagesID
from Users u
where u.ID = 1)
答案 0 :(得分:4)
您的数据结构非常糟糕。 SQL有一个很好的方法来存储事物列表 - 它被称为表,而不是字符串。您应该有一个联结表,每个用户和每篇文章有一行。因此,在UserPages
中,第一个用户将有四行。
有时,我们会遇到无法更改的数据。如果是这种情况,你可以做你想做的事,但效率很低。这是一种方式:
select u.UserId, p.*
from users u join
pages p
on ',' + u.PagesId + ',' like '%,' + cast(p.pageId as varchar(255)) + ',%';