Sql “先取”和“先取”有区别吗?

Sql “先取”和“先取”有区别吗?,sql,oracle,Sql,Oracle,我目前正在准备Oracle SQL考试。我有一些考试要考。一个问题如下: 哪个查询将生成所需的结果 有两个可能的答案,我挑了最上面的一个。但根据考试结果,答案应该是最差的 SELECT employee_id, last_name, salary FROM employees ORDER BY salary DESC FETCH FIRST 5 PERCENT ROWS ONLY; SELECT employee_id, last_name, salary FROM employees ORD

我目前正在准备Oracle SQL考试。我有一些考试要考。一个问题如下:

哪个查询将生成所需的结果

有两个可能的答案,我挑了最上面的一个。但根据考试结果,答案应该是最差的

SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC
FETCH FIRST 5 PERCENT ROWS ONLY;

SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC
FETCH 5 PERCENT ROWS ONLY;
现在我想找出“FETCH”和“FETCH FIRST”之间的区别,但到目前为止,我还没有在谷歌上找到它,我只找到了一些关于“FETCH FIRST”和“FETCH NEXT”等组合的页面。但到目前为止,我所寻找的一切都不顺利

有人能给我解释一下“先取”和“先取”的区别吗?如果两者都是正确的,为什么考试更喜欢“先取”而不是“先取”


提前谢谢

有时候在你开口之前最好先尝试一下

SQL>     with basis as (select level l,100 - level lm from dual connect by level <=100)
  2      select l, lm from basis order by lm fetch first 5 percent rows only;

         L         LM
---------- ----------
   100          0
    99          1
    98          2
    97          3
    96          4
因此,第一种说法是有效的

第二个:

SQL>     with basis as (select level l,  100 - level lm from dual connect by level <=100)
  2      select l, lm from basis order by lm fetch  5 percent rows only;

Error starting at line : 6 in command -  
    with basis as (select level l,  100 - level lm from dual connect by level <=100)
    select l, lm from basis order by lm fetch  5 percent rows only
Error at Command Line : 7 Column : 48
Error report -
SQL Error: ORA-00905: missing keyword
00905. 00000 -  "missing keyword"
*Cause:    
*Action:
所以,错误消息指出,在获取之后,缺少了一些内容。
或者正如一匹马所指出的那样。阅读手册

您的考试错误,正确的查询是最前面的查询

FETCH语句是用于从多行查询的结果集中检索数据行的PL/SQL语句,因此不能用于SQL查询:

FETCH NEXT | FIRST语句在查询中用于从结果中仅检索特定数量的行:

包含行限制子句的语法:

因此,OFFSET和FETCH子句都是可选的;但是,如果包含FETCH子句,那么它后面必须紧跟第一个或下一个关键字

因此,第二个问题是:

选择员工id、姓氏、工资 来自员工 按薪金说明订购 只取5%的行;
语法不正确,因为缺少第一个或下一个关键字。

很简单:仅获取5%的行无效,将被Oracle拒绝。您必须在回执后指定第一个或下一个。谢谢您的回答。这意味着我考试的答案不是应该的,不是理想的情况,谢谢;。但我很高兴我一开始确实选择了正确的答案。显然,这些问题是为了检查你是否知道语法要点。我认为我可以相信这次考试,但显然不是。