我有一个如下查询(Query1)
SELECT COLUMN1,COLUMN2,COLUMN3 ,COLUMN4
FROM (SELECT COLUMN1,COLUMN2,COLUMN3,COLUMN4
FROM TABLE1 join TABLE3 ON JOINCONDITION
LEFT JOIN TABLE4 ON JOINCONDITION2
UNION ALL
SELECT COLUMN5,COLUMN2,COLUMN3,COLUMN6
FROM TABLE5 join TABLE3 ON JOINCONDITION
LEFT JOIN TABLE4 ON JOINCONDITION3
)
我优化了上面的查询并派生了以下查询(Query2)
SELECT CASE CONDITION... COLUMN1,COLUMN2,COLUMN3,CASE CONDITION.. AS COLUMN4
FROM (SELECT COLUMN2,COLUMN3
FROM TABLE1
UNION ALL
SELECT COLUMN2,COLUMN3
FROM TABLE5 )
JOIN TABLE3 ON JOINCONDITION
LEFT JOIN TABLE4 ON JOINCONDITION2
LEFT JOIN TABLE5 ON JOINCONDITION3
COLUMN3 - DATE数据类型
COLUMN2 - USERIDs
要验证新查询(Query2),我尝试使用MINUS运算符执行这两个查询,如下所示
QUERY3:
QUERY1 WHERE COLUMN2 BETWEEN 17150 AND 20000
MINUS
QUERY2 WHERE COLUMN2 BETWEEN 17150 AND 20000
这导致5行,COLUMN2 = 17480。然后我试了
QUERY4:
QUERY2 WHERE COLUMN2 BETWEEN 17150 AND 20000
MINUS
QUERY1 WHERE COLUMN2 BETWEEN 17150 AND 20000
我得到相同的5行相同的值。所有列都在QUERY3和QUERY4之间完全匹配。 COLUMN3也有相同的日期和时间。 QUERY3和QUERY4之间的时间值(从年到秒)。
然后我尝试直接给出值,如下所示。此查询不返回任何内容
QUERY1
WHERE COLUMN2 =17480
MINUS
QUERY2
WHERE COLUMN2 =17480
即使我在MINUS运算符之间交换QUERY1和QUERY2的位置,也没有结果。 还有一点需要注意的是,即使我缩小了QUERY3和QUERY4中BETWEEN子句的范围,也没有结果。
关于这个问题的任何想法?