如何在关系 (SQL) 中最多选择 [number] 个项目?

假设我有一家商店,里面有一些产品。所以我的产品与不同的商店有关。我想过滤 24 种产品,但每个商店最多 3 种产品。基本上我不能从同一家商店退回超过 3 个产品......我怎么能在 sql 中做到这一点?

xichen9 回答:如何在关系 (SQL) 中最多选择 [number] 个项目?

SELECT * FROM product p1 JOIN LATERAL
    (SELECT TOP 3 id FROM product p2 WHERE p2.store_id = p1.store_id) p3
    ON p3.id = p1.id

根据您的 DBMS(例如 postgre SQL、mySQL),您可能需要使用 LIMIT 而不是 TOP

SELECT id FROM product p2 WHERE p2.store_id = p1.store_id LIMIT 3

Oracle 还使用了 another syntax...

要在多个请求上获得一致的结果,您可能还需要对内部查询应用一些排序,但也可以对外部查询应用一些排序。

本文链接:https://www.f2er.com/83339.html

大家都在问