db1*_*234 5 sql-server greatest-n-per-group
我有以下查询,查找与搜索匹配的TOP 5 产品.每个产品都与商店相关联
SELECT TOP 5*FROM Products p,Shops s WHERE p.ShopId = s.ShopId AND p.ProductName LIKE'%christmas%'
我需要对此进行扩展,以便在每个商店中返回TOP 5 产品.
任何人都可以让我知道如何修改查询来实现这一目标吗?- 即选择在每个商店中匹配"%christmas%"的TOP 5产品(而不是显示所有商店中匹配"%chrismas%"的TOP 5产品的当前产品).
gbn*_*gbn 10
你实际上错过了ORDER BY以使TOP有意义,或者任何基于ROW_NUMBER的解决方案需要ORDER BY.
SELECT
*
FROM
Shops s
CROSS APPLY (
SELECT TOP 5
*
FROM
Products p
WHERE
p.ShopId = s.ShopId AND p.ProductName LIKE '%christmas%'
ORDER BY --added on edit
???
) X
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14345 次 |
| 最近记录: |