【问题标题】:'limit' clause in Oracle SQL "SQL command not properly ended" [duplicate]Oracle SQL“SQL命令未正确结束”中的“限制”子句[重复]
【发布时间】:2018-07-24 15:43:33
【问题描述】:

我知道之前在这里提出过与“限制”相关的问题, 我已经提到过他们。我的问题有些不同。

这是我的查询:

select id,somecol from sometable where someval=2 order by id desc limit 3

我收到一条错误消息,提示“SQL 命令未正确结束”。 我该如何解决这个问题?如果您需要更多信息,请随时告诉我。

【问题讨论】:

  • 查看答案here。这是 Oracle 12c 吗?如果是这样,请将“limit 3”替换为“FETCH FIRST 3 ROWS ONLY”。如果不是,我认为标准的 Oracle-y 要做的是“SELECT * FROM (select id,somecol from sometable where someval=2 order by id desc) WHERE rownum
  • 你的oracle版本是什么
  • 我的版本是11g。速成版

标签: sql oracle limit


【解决方案1】:

一般情况下,我们在 MYSQL 数据库中使用 LIMIT,在 Oracle 中使用 Rownum。

MySQL 语法:

选择列名 FROM 表名 WHERE 条件 限制数量;

Oracle 语法:

选择列名 FROM 表名 WHERE ROWNUM

参考资料:

https://www.w3schools.com/sql/sql_top.asp

【讨论】:

  • 'select id,somecol from sometable where someval=2 order by id desc where rownum
  • 好的,这成功了!谢谢!
【解决方案2】:

如果您运行的是 Oracle 12c,则可以使用 FETCH FIRST n ROWS ONLY:

SELECT id, somecol
       FROM sometable
      WHERE someval = 2
   ORDER BY id DESC
FETCH FIRST 3 ROWS ONLY;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多