【问题标题】:Parameters and Join in Oracle SQLOracle SQL 中的参数和连接
【发布时间】:2016-12-01 15:08:34
【问题描述】:

我想通过连接和分页查询从两个表中获取所有数据,以便始终存在 10 行。我的第一个问题是它仅在我的页码为 1 时才有效,没有加入。我的第二个问题(如果我解决第一个问题可能会解决)是如果页码为 1,如果有连接,它甚至不起作用。这是我的查询:

SELECT * FROM
(
    SELECT INNER_TABLE.*, ROWNUM r
    FROM (
         SELECT details.*, extras.* FROM d_table details, e_table extras
         WHERE SYSDATE - details.UPDATE_DATE < 60
         ORDER BY details.UPDATE_DATE DESC
    ) INNER_TABLE
    WHERE ROWNUM < (:pageNum * :PerPage + 1)
)
WHERE r >= (((:pageNum - 1) * :perPage) +1);

它只在第 1 页上没有加入。我不明白为什么它会这样工作。 如果有人可以分享我的问题或我为什么愚蠢,请回答。 提前致谢。

编辑:除一个以外的任何页码都会返回一个空结果。一个返回它应该的东西。
编辑编辑:只有在没有连接的情况下执行查询时,上述情况才成立。在加入时,我收到一个错误:“列定义不明确”。

【问题讨论】:

  • “如果有连接就不行”是什么意思。你得到一个错误?空结果?
  • 对不起。已编辑..
  • 您确定发布了您使用的实际查询吗? ORDER BY details.UPDATE_DATE &lt; 60 在 Oracle 中不是合法语法...
  • 对不起。再次。编辑了查询和更多详细信息。
  • 你能发布你的查询的“不加入”版本吗?仅适用于第 1 页的那个。

标签: sql oracle join parameters pagination


【解决方案1】:

我的查询的问题是它无法使用“INNER_TABLE.*”获取“details., extras.”。我的猜测是它无法识别 INNER_TABLE 中的 * 是什么意思。因此解决方案是在查询中的任何位置使用所有字段名称而不是“*”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 2013-07-21
    • 2023-03-23
    • 2017-03-22
    • 2016-01-23
    • 2012-06-23
    相关资源
    最近更新 更多