嗨,当我使用oracle从WITH子句中的表名(QUERY3)中进行选择时,我遇到一个奇怪的问题。 该示例,但语法相同)。
WITH QUERY0 AS (
SELECT...
FROM ...
WHERE...
AND...
),
QUERY1 AS
SELECT...
FROM...
WHERE...
AND...
),
QUERY2 AS (
SELECT...
FROM...
WHERE...
AND...
),
QUERY3 AS (
SELECT...
FROM...(so this is the main query and selects from QUERY1 and QUERY2
WHERE...
AND...
)
SELECT P.*
FROM ANOTHER_TABLE AN, QUERY3 P
WHERE (P.PRODUCT_NAME LIKE 'IA%' OR P.PRODUCT_NAME LIKE 'ERSK%')
AND ((P.DT IS NULL) OR (P.DT >= AN.DT))
AND P.PROP_ID = 123456
--this works, returns the expected row starting with prop_id 123456, all good until I remove this AND.
问题-当AND'P.PROP_ID = 123456'为时,紧接在上方的Select语句仅返回prop_id 1234546行 输入,如果省略,则结果中不返回该行!
例如
SELECT P.*
FROM ANOTHER_TABLE AN, QUERY3 P
WHERE (P.PRODUCT_NAME LIKE 'IA%' OR P.PRODUCT_NAME LIKE 'ERSK%')
AND ((P.DT IS NULL) OR (P.DT >= AN.DT))
这不会返回123456行...但是可以肯定的是,如果它在QUERY3结果中,则应显示是否添加 AND P.PROP_ID = 123456 ...还是不是?!?
很明显,我一定是误会了一些东西,如果有人可以帮助的话,将不胜感激!
欢呼
JT