为什么在AND语句中添加键字段时,WITH语句中的表仅返回特定行?

时间:2019-05-19 04:50:20

标签: oracle with-statement

嗨,当我使用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

0 个答案:

没有答案