Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
限制SQL结果_Sql_Oracle - Fatal编程技术网

限制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;