首页 > 解决方案 > 当所有值都为 NULL 时不返回行 - SQL

问题描述

我正在使用 redshift,但我怀疑这对许多其他形式的 SQL 很有价值。我也是 SQL 的新手,希望对我的查询提出任何建议,除了专门针对我的问题的建议;请保持建设性。

问题:如何避免返回结果的所有行都为 NULL 的行?

这是我的查询:

SELECT 
    CASE WHEN events.event_id IN 
        (SELECT DISTINCT event_id FROM strings_ref WHERE string_id = 123)
        THEN event_id END AS 123, 
    CASE WHEN events.event_id IN 
        (SELECT DISTINCT event_id FROM strings_ref WHERE string_id = 456)
        THEN event_id END AS 456
    FROM events

还有很多很多其他string_id的,这个查询只返回了1000个连续的NULL。编辑:我已经证实有结果。

注意:我已经接受了与我的问题最相关的答案,但@gordon-linoff 的答案更为笼统。

标签: sqlamazon-redshift

解决方案


这是一种方法:

SELECT E.*, SR1.EVENT_ID, SR2.EVENT_ID
FROM Events E
    LEFT OUTER JOIN strings_ref sr1 on E.EVENT_ID=SR1.EVENT_ID AND sr1.string_id = 123
    LEFT OUTER JOIN strings_ref sr2 on E.EVENT_ID=SR2.EVENT_ID AND sr2.string_id = 456
WHERE SR1.EVENT_ID IS NOT NULL OR SR2.EVENT_ID IS NOT NULL

多次加入 strings_ref


推荐阅读