在下面您将看到一个由5个基表组成的简单联接语句,如果(dandm_emi_cae_statement_links,表中的列geod_exclude_us_y等于'N‘,则尝试将两个左外部连接语句表JMD_UDG_DISTRIBUTION geod_us_cae_statement_links)从JMD_UDG_DISTRIBUTION语句中排除出来。
当前,SQL计划中的以下语句仍然查看这些表,如果表JMD_UDG_DISTRIBUTION列geod_exclude_us_y = 'N',如何阻止它执行左边的外部联接
SELECT lfu.*
FROM JMD_UDG_DISTRIBUTION jud
JOIN dm_lifeline_file_usages lfu
ON lfu.group_id = jud.GROUP_SURR_ID
JOIN dm_lifeline_file_ips lfi
ON lfi.usage_group_id = lfu.group_id
AND lfi.lfu_surr_id = lfu.surr_id
LEFT OUTER JOIN dandm_emi_cae_statement_links dnm
ON jud.geod_exclude_us_y = 'Y'
AND dnm.cae=lfi.cae_number
LEFT OUTER JOIN geod_us_cae_statement_links gucs
ON jud.geod_exclude_us_y = 'Y'
AND gucs.cae_number=lfi.cae_number发布于 2020-02-17 16:43:16
当然了。LEFT JOIN的规则如下:
ON条件匹配的所有行。当第二个表中没有匹配时,因此,ON中第一个表上的一个条件对结果没有影响。严格地说,这不是真的。有一种奇怪的影响。第二个表中的列--即使对于其他匹配的行--都是NULL。
因此,您需要在WHERE子句中进行筛选。将jud.geod_exclude_us_y = 'Y'从ON子句移到:
WHERE jud.geod_exclude_us_y = 'Y'https://stackoverflow.com/questions/60266877
复制相似问题