22,301
社区成员




SET NOCOUNT ON
IF OBJECT_ID('commentreview')>0
DROP TABLE commentreview
CREATE TABLE [CommentReview](
[ReviewID] [int] NOT NULL,
[UserID] [int] NOT NULL,
[Comments] [nvarchar](50) NULL,
)
GO
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (1, 2, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (2, 1, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (5, 6, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (5, 7, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (6, 5, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (6, 7, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (7, 5, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (7, 6, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (10, 11, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (10, 12, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (10, 13, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (10, 14, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (11, 10, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (11, 12, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (11, 13, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (11, 14, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (12, 10, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (12, 11, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (12, 13, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (12, 14, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (13, 10, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (13, 11, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (13, 12, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (13, 14, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (14, 10, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (14, 11, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (14, 12, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (14, 13, N'c')
INSERT [CommentReview] ([ReviewID], [UserID], [Comments]) VALUES (14, 15, N'c')
IF OBJECT_ID('test')>0
DROP TABLE test
GO
CREATE TABLE test (reviewid int,userid int)
GO
INSERT test SELECT a.reviewid,a.userid FROM commentreview a INNER JOIN commentreview b
ON a.reviewid=b.userid AND a.userid=b.reviewid ORDER BY a.reviewid --创建自连接,排除差错记录
GO
IF OBJECT_ID('f_str')>0
DROP FUNCTION f_str
GO
CREATE FUNCTION f_str(@reviewid VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @str VARCHAR(100)
SET @str=''
SELECT @str=@str+','+LTRIM(userid) FROM test WHERE reviewid=@reviewid
RETURN (@reviewid+','+STUFF(@str,1,1,''))
END
GO
--如果1,2和2,1你认为是同一个你可以再筛选一下
CREATE TABLE test1 (reviewid varchar(100))
INSERT test1 SELECT dbo.f_str(reviewid) result FROM test GROUP BY reviewid
--SELECT * FROM test1
IF OBJECT_ID('f_order')>0
DROP FUNCTION f_order
GO
CREATE FUNCTION f_order(@value VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @tb TABLE (reviewid VARCHAR(100))
WHILE CHARINDEX(',',@value)>0
BEGIN
INSERT @tb SELECT LEFT(@value,CHARINDEX(',',@value)-1)
SET @value=RIGHT(@value,LEN(@value)-CHARINDEX(',',@value))
END
INSERT @tb SELECT @value
DECLARE @str VARCHAR(100)
SET @str=''
SELECT @str=@str+','+reviewid FROM @tb ORDER BY reviewid
RETURN (STUFF(@str,1,1,''))
END
GO
SELECT DISTINCT dbo.f_order(reviewid) FROM test1
SET NOCOUNT OFF
/*
1,2
10,11,12,13,14
5,6,7
*/