所有值均为NULL时不返回行-SQL

时间:2018-07-09 18:16:27

标签: sql amazon-redshift

我正在使用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的答案更为笼统。

2 个答案:

答案 0 :(得分:1)

一种方法使用子查询:

SELECT e.*
FROM (SELECT (CASE WHEN e.event_id IN (SELECT sr.event_id FROM strings_ref sr WHERE sr.string_id = 123)
                   THEN e.event_id
              END) AS e_123, 
             (CASE WHEN e.event_id IN (SELECT sr.event_id FROM strings_ref sr WHERE sr.string_id = 456)
                  THEN e.event_id
              END) AS e_456
      FROM events e
     ) e
WHERE e_123 IS NOT NULL or e_456 IS NOT NULL;

一些建议:

  • 限定查询中的所有列名。
  • 使用表别名的缩写。
  • SELECT DISTINCTIN无关。
  • 给您的列名看起来不像数字。

答案 1 :(得分:1)

这是一种方法:

"scripts": {
    "start": "cross-env DEBUG=express:router webpack-dev-server ...."
} 

多次加入strings_ref