我能得到一些帮助吗?
数据库:CompanyXYZ
表:mkt_product
类别ID是父值,产品ID是子值
我在同一个表中有这些列:
产品ID | 类别ID | 产品 |
---|---|---|
001 | cat1 | 洗衣机 |
002 | cat1 | 冰箱 |
003 | cat1 | 烤箱 |
004 | cat1 | 内置烤箱 |
005 | cat1 | 微波炉 |
006 | cat1 | 真空吸尘器 |
007 | cat1 | 滚刀 |
008 | cat2 | 土豆 |
009 | cat2 | 胡萝卜 |
010 | cat2 | 洋葱 |
011 | cat2 | 大蒜 |
012 | cat2 | 番茄 |
013 | cat2 | cucumber |
014 | cat2 | 生菜 |
我想要的结果:
产品ID | 类别ID | 产品 |
---|---|---|
001 | cat1 | 洗衣机 |
002 | cat1 | 冰箱 |
003 | cat1 | 烤箱 |
004 | cat1 | 内置烤箱 |
005 | cat1 | 微波炉 |
008 | cat2 | 土豆 |
009 | cat2 | 胡萝卜 |
010 | cat2 | 洋葱 |
011 | cat2 | 大蒜 |
012 | cat2 | 番茄 |
最后,我是否从每个类别中获得前5名的结果并不重要,但我只想从每个类别获得5个结果。这就像每个类别的“限制5”,但在相同的输出中,只有一个查询。我试过用“limit”和“having count”,但我没有得到我想要的。
非常感谢。
1条答案
按热度按时间gcxthw6b1#
正如我在评论中所说,您可以使用window-functions-usage来完成
架构代码:
查询sql:
注意:
t1.product_id = t2.product_id AND t1.category_id=t2.category_id AND t1.product=t2.product
非常难看,如果你的表有id这样的主键,它会更简单DB Fiddle Demo