我有一个表搜索,列是:
id(int), title(nvarchar), count(int), expression(nvarchar)
值:
1, aaa, 5, car
2, aaa, 5, car poster
3, bbb, 8, car magazine
4, bbb, 8, car tv
5, ccc, 12, boat
6, ccc, 12 , boat tv
我需要以下结果
4, bbb, 8, car tv
3, bbb, 8, car magazine
2, aaa, 5, car poster
1, aaa, 5, car
或更好的结果来自4,3
和2,1
像这样:
3, bbb, 8, car magazine
2, aaa, 5, car poster
我试过了:
SELECT title
FROM
(SELECT *
FROM Search
ORDER BY count DESC)
WHERE expression
LIKE '%car%'
GROUP BY title
我还尝试过DISTINCT
答案 0 :(得分:0)
使用带有CTE功能的ROW_NUMBER来查找匹配的行,并按降序计数和绑定断路器的ID对它们进行排序。然后选择每个分区(标题)中的第一个编号行。
WITH cteFindCar AS (
SELECT id, title, count, expression,
ROW_NUMBER() OVER(PARTITION BY title ORDER BY count DESC, id) AS RowNum
FROM search
WHERE expression LIKE '%car%'
)
SELECT id, title, count, expression
FROM cteFindCar
WHERE RowNum = 1;