我有一个类似于以下内容的自动生成的SQL,我试图对其进行一些简化以说明我所面临的问题的症结所在。 Customer.Id是一个VARCHAR2(40字节),Order.CustomerId是一个数字(10,0)
SELECT *
FROM
(
SELECT query.*, ROWNUM ROWNUM__
FROM
(
SELECT cst.name, cst.lastname, ord.product, ord.price
FROM Customer cst
LEFT OUTER JOIN Order ord ON ord.Manufacturer = 'Samsung'
AND TO_CHAR(cst.Id) = TO_CHAR(ord.CUSTOMER_ID)
) query
WHERE ROWNUM <= 1000
)
WHERE ROWNUM__ > 0
当我自己运行最里面的查询时,得到的是我期望的结果,但是我遇到的问题是,当一起运行所有内容时,LEFT OUTER JOIN返回空列。如果我删除下面的“ where子句”,则它可以工作,但不幸的是,分页功能由我的工作场所所建立的库处理,并且必须使用它,因此更改这些ROWNUM标准对我来说不是一个选择。
WHERE ROWNUM <= 1000
如果我删除它,那么它可以工作,但是我需要能够通过表的ID加入。
TO_CHAR(cst.Id) = TO_CHAR(ord.CUSTOMER_ID)
如果有帮助,执行计划为: