我需要在SELECT
语句中选择5个字段。
这5个字段中有2个是不同的,所以当我尝试只有这两个字段的SELECT
时,我会得到我想要的结果(我在这个请求中只放了DISTINCT
)。
其他3个字段不同,因此当我将它们添加到SELECT
语句时,DISTINCT
还不够。我得到重复的行。
目的是使用两个字段获取我的请求的结果,然后将结果行添加到顶部1,例如其他字段。有可能吗?
这是请求:
-- Here Id, Description, and Image are differents and give duplicate rows
SELECT DISTINCT Title, GroupingId, Id, Description, Image
FROM dbo.AllContent
WHERE Title like '%'+'harr'+'%'
AND Rating <> 18
--result 89 rows...
-- No problems withs these fields
SELECT Title,GroupingId
FROM dbo.AllContent
WHERE Title like '%'+'harr'+'%'
AND Rating <> 18
--result 28 rows...
可以在5个字段中使用GROUP BY
语句吗?
我使用第一个请求添加输出(5个字段)
Title | Id | GroupingId | Description | Image
Title1 1 1 Description1 1.jpg
Title1 2 1 Description2 2.jpg
Title1 3 1 Description3 3.jpg
Title4 4 4 Description4 4.jpg
Title5 5 5 Description5 5.jpg
Title5 6 5 Description6 6.jpg
然后请求包含2个字段:
Title | GroupingId
Title 1 1
Title 4 4
Title 5 5
我需要什么:
Title | Id | GroupingId | Description | Image
Title 1 1 1 Description 1 1.jpg
Title 4 4 4 Description 4 4.jpg
Title 5 5 5 Description 5 5.jpg
答案 0 :(得分:1)
我真的不知道你在where子句中想要什么,所以你可以添加它。但这应该做你需要的。
SELECT Title,
MIN(ID) AS ID,
GroupingID,
MIN([Description]) AS [Description],
MIN([Image]) AS [Image]
FROM dbo.AllContent
GROUP BY Title,GroupingID
答案 1 :(得分:0)
您可以使用row_number()
:
SELECT Title, GroupingId, Id, Description, Image
FROM (SELECT ac.*,
r
FROM dbo.AllContent ac
WHERE ac.Title like '%'+'harr'+'%' AND Rating <> 18
) ac
WHERE seqnum = 1
答案 2 :(得分:0)
根据上面提供的示例,这应该适合您。
SELECT Title, GroupingId, Id, Description, Image
FROM dbo.AllContent
WHERE Title like '%'+'harr'+'%'
AND Rating <> 18
AND Id in (1,4,5)
答案 3 :(得分:-1)
This one有100个赞成票。使用它后我爱上了CTE。为什么不尝试这个!!
WITH CTE AS(
SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
RN = ROW_NUMBER()OVER(PARTITION BY col1 ORDER BY col1)
FROM dbo.Table1
)
DELETE FROM CTE WHERE RN > 1