【发布时间】:2021-03-04 21:04:39
【问题描述】:
我有一家在线商店,并试图在产品页面上展示五种类似的产品。我尝试使用INNER JOIN 查询(连接表)的产品和标签之间存在多对多关系。这是我到目前为止的 SQL 查询:
SELECT TOP(5) *
FROM [Store_ProductTags] AS [s]
INNER JOIN [Store_Products] AS [s0] ON [s].[ProductId] = [s0].[Id]
ORDER BY CASE WHEN TagId IN (1, 17) THEN 0 ELSE 1 END;
它可以满足我的需求(获得与正在显示的产品具有相同标签的五种产品),但是包含重复项...
这是我得到的结果(注意 ProductId 为 1 的两条记录):
ProductId TagId Name
10 17 Harlots - The Woman You Saw... (CD)
1 1 Unholy - Blood of the Medusa (CD)
44 1 Unholy - Blood of the Medusa (LP)
1 2 Unholy - Blood of the Medusa (CD)
2 2 Lye By Mistake - Arrangements for Fulminating Vective (CD)
我想排除重复项。到目前为止,我已经尝试过DISTINCT 和GROUP BY,正如其他不同问题中的回复所显示的那样,无济于事。我在SELECT 之后添加DISTINCT 时收到的错误是...
如果 SELECT DISTINCT 是 ORDER BY 项目必须出现在选择列表中 指定。
有什么建议吗?
【问题讨论】:
标签: sql sql-server subquery sql-order-by inner-join