我正在使用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的答案更为笼统。
答案 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 DISTINCT
与IN
无关。答案 1 :(得分:1)
这是一种方法:
"scripts": {
"start": "cross-env DEBUG=express:router webpack-dev-server ...."
}
多次加入strings_ref