java - 具有多个 where 条件的右外连接

标签 java python sql jython

我在从 SQL 查询返回任何结果时遇到一些问题。我很确定这与 WHERE 条件有关。

我只想返回某些 RULE_ID。我通过 TABLE1 中的 RULE_NAME 来识别 RULE_ID。然后,我连接 TABLE1 和 TABLE2,并判断如果 RULE_ID 的 DATE 列等于 20 年 3 月 5 日,并且 COLUMN3 列不为空,则返回 RULE_ID。

目前,我没有通过此查询得到任何结果,而且我也不完全确定原因。任何帮助将不胜感激!

编辑:COLUMN3 位于 TABLE2 中,但不在 TABLE1 中。我没有收到错误,只是当我认为我应该得到一些结果时没有显示结果。如果删除 AND (TABLE2.DATE = '05-MAR-20') 我会得到几个结果。不知道为什么会这样...

sql_query = """
            SELECT TABLE1.RULE_ID, TABLE2.RULE_ID
            FROM TABLE1
            RIGHT OUTER JOIN TABLE2
            ON (TABLE1.RULE_ID = TABLE2.RULE_ID)
            WHERE (TABLE1.RULE_NAME = 'TEST1' OR TABLE1.RULE_NAME = 'TEST2')  
            AND (TABLE2.DATE = '05-MAR-20')
            AND COLUMN3 IS NOT NULL
            """

最佳答案

使用LEFT JOIN。更容易遵循逻辑(“将所有行保留在第一个表中”。然后将适当的过滤移至 ON 子句):

SELECT TABLE1.RULE_ID, TABLE2.RULE_ID
FROM TABLE2 LEFT JOIN
     TABLE1
      ON TABLE1.RULE_ID = TABLE2.RULE_ID AND
         TABLE1.RULE_NAME IN ('TEST1', 'TEST2')   
WHERE TABLE2.DATE = DATE '2020-03-05' AND TABLE2.COLUMN3 IS NOT NULL

关于java - 具有多个 where 条件的右外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60549036/

相关文章:

python - 如何修复 PYTHONPATHS 和 Python 的一个奇怪错误?

python - 如何使用 Python 将网页下载为 PDF?

sql - 通过比较日期 SQL 过滤数据

php - 解释正确的mysqli对象的逻辑

java - 在另一个类中使用 arraylist 中的指定值

java - 是否可以循环 setter 和 getter?

python - 在 Python 中查找直到某个日期的时间

java - J按钮 : actionPerformed while invisible/disabled?

java - 如何在黑莓中替换超过 1 个字符

mysql - SQL SELECT 查询在最后一辆车前附加一个 "and"