Sql “先取”和“先取”有区别吗?
我目前正在准备Oracle 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
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拒绝。您必须在回执后指定第一个或下一个。谢谢您的回答。这意味着我考试的答案不是应该的,不是理想的情况,谢谢;。但我很高兴我一开始确实选择了正确的答案。显然,这些问题是为了检查你是否知道语法要点。我认为我可以相信这次考试,但显然不是。