Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有左联接的SQL查询中的问题_Sql_Left Join_Hana - Fatal编程技术网

具有左联接的SQL查询中的问题

具有左联接的SQL查询中的问题,sql,left-join,hana,Sql,Left Join,Hana,我正在尝试从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

我正在尝试从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。那个!=它不能正常工作。我试过了,但问题仍然存在。我猜我的左连接查询有问题,因为当我删除所有连接并使用与MARK_as_DELETED相同的条件进行简单的Select查询时!='1',我得到了正确的输出,但没有左连接。 我试着用所有可能的方法重新编写我的左连接查询,比如上移和下移条件等,但没有任何效果

如果您能在这里帮助我,我将不胜感激。

当使用left join时,第一个表上的条件通常应该包含在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
这源于左连接的定义。左联接保留第一个表中的所有行,而不管ON子句的计算结果是true、false还是NULL


因此,忽略第一个表上的条件。规则是第一个表上的条件进入何处,第二个表上的条件进入on。

@vinod827:换句话说:您已发出警报。标记为已删除!='1'通过将其置于ON子句中,仅表示连接条件。因此,从警报中选择所有行,只考虑加入未标记警报行的数据记录。这是一个常见问题。请总是用谷歌搜索你的问题/问题/目标的许多清晰、简洁和具体的版本/措辞,有或没有你的特定字符串/名称,并阅读许多答案。将发现的相关关键字添加到搜索中。如果你找不到答案,就发布,使用1个变体搜索作为标签的标题和关键字。请参见文本上方的向下投票箭头鼠标。当您确实有非重复代码问题要发布时,请阅读并执行操作。了解左联接返回的内容:内部联接行加上由null扩展的不匹配左表行。始终知道作为左连接的一部分,您需要什么样的内部连接。一个WHERE或ON,它要求在上的左联接删除任何由NULL扩展的行后右表列不为NULL,即只保留内部联接行,即将左联接转换为内部联接。你有。