SQL 查询中的左连接问题

Issue in SQL query with Left Join

我正在尝试从集成的 Hana 数据库中获取数据。

以下是 SQL:-

 SELECT alert.UNIQUE_ALERT_ID, 
        alert.MARK_AS_DELETED, 
        data.VALUE
 FROM "ab"."t-systems.testDB::tables.Alerting" alert
      LEFT JOIN 
      "ab"."t-systems.testDB::tables.AdditionalData" data
      ON alert.UNIQUE_ALERT_ID = data.UNIQUE_ALERT_ID
      AND data.KEY='batchId'
      AND alert.MARK_AS_DELETED != '1';

问题是我正在获取 Mark_As_Deleted 也是 1 的所有数据。!= 无法正常工作。我试过 <> 但问题仍然存在。我猜想我的 Left Join 查询有问题,因为当我删除所有连接并使用与 MARK_AS_DELETED != '1' 相同的条件进行简单的 Select 查询时,我得到了正确的输出,但 Left Join 没有。 我尝试用所有可能的方式(比如上下移动条件等)重写我的 Left Join 查询,但没有任何效果。

如果有人能帮助我,我将不胜感激

当使用 left join 时,first table 的条件通常应该进入 where 子句。

所以我想你想要:

SELECT alert.UNIQUE_ALERT_ID, alert.MARK_AS_DELETED, data.VALUE
FROM "ab"."t-systems.testDB::tables.Alerting" alert LEFT JOIN
     "ab"."t-systems.testDB::tables.AdditionalData" data
      ON alert.UNIQUE_ALERT_ID = data.UNIQUE_ALERT_ID AND
         data.KEY = 'batchId'
WHERE alert.MARK_AS_DELETED <> '1';  -- remove the quotes if this is a number

这是根据 a LEFT JOIN 的定义得出的。 LEFT JOIN 保留第一个 table 中的所有行,而不管 ON 子句的计算结果是真、假还是 NULL

因此,第一个 table 的条件将被忽略。规则是第一个 table 进入 WHERE 和第二个 table 进入 ON.