限制SQL结果
我有一个查询,试图从表中获取结果:限制SQL结果,sql,oracle,Sql,Oracle,我有一个查询,试图从表中获取结果: SELECT P.P_CODE, P.P_JEWELRYTYPE,P.p_catalog, P_AVAILABLE, P_RESERVED , p.p_catalog FROM products P WHERE P.p_catalog IN (8796093383256,8796093252184,8796093317720,8796093121112,8796093186648); 我想要一个查询,可以将每个目录类型的结果数限制为500个。如何修改查询
SELECT P.P_CODE, P.P_JEWELRYTYPE,P.p_catalog, P_AVAILABLE, P_RESERVED , p.p_catalog
FROM products P
WHERE
P.p_catalog IN (8796093383256,8796093252184,8796093317720,8796093121112,8796093186648);
我想要一个查询,可以将每个目录类型的结果数限制为500个。如何修改查询以实现此目的?使用行号:
您可以将where筛选放在内部查询或外部查询中。分析函数row\u number将起作用,它将为每个p\u目录分配行号,以便您可以在外部查询的where子句中根据该条件进行筛选:
SELECT *
FROM (
SELECT
p.P_CODE, p.P_JEWELRYTYPE, p.p_catalog, p.P_AVAILABLE, p.P_RESERVED, p.p_catalog,
row_number() over (partition by p.p_catalog) as rn
FROM products p
WHERE p.p_catalog IN (8796093383256,8796093252184,8796093317720,8796093121112,8796093186648)
) p
WHERE rn <= 500;
第二张桌子在哪里?@BarbarosÖzhan:我认为实际上没有第二张桌子,可能是打字错误。@einpoklum好的,谢谢:
SELECT *
FROM (
SELECT
p.P_CODE, p.P_JEWELRYTYPE, p.p_catalog, p.P_AVAILABLE, p.P_RESERVED, p.p_catalog,
row_number() over (partition by p.p_catalog) as rn
FROM products p
WHERE p.p_catalog IN (8796093383256,8796093252184,8796093317720,8796093121112,8796093186648)
) p
WHERE rn <= 500;