2017-10-13 51 views
-2

我正在使用別名。
以下是我的查詢。我想避免用NULL計數器顯示行。如果返回空值,則忽略行sql

SELECT activity_id, user_id, 
(CASE WHEN activity_id = 1 OR activity_id = 2 THEN user_id END) AS counter 
FROM eventedge_ticket_activity 

它提供了以下結果:

SQL Result

我怎麼能跳過櫃檯與行NULL

回答

1

未經測試,但下面應該工作。

SELECT activity_id, user_id, 
CASE activity_id WHEN 1 THEN user_id 
       WHEN 2 THEN user_id 
       ELSE NULL 
END AS counter 
FROM eventedge_ticket_activity 
WHERE counter IS NOT NULL 
+0

不這麼認爲計數器提到的變化工作不會在where子句中可以看出。只要沒有設置only_full_group_by,只要改變爲有效就可以工作。 –

+0

#1054 - 'where子句'中的未知列'counter' – abhimanyu

0

下面是查詢成功運行。

SELECT * FROM (SELECT activity_id, user_id, case when activity_id=1 then user_id when activity_id=2 then user_id end as counter FROM eventedge_ticket_activity) db where counter != 'NULL'

+0

這是非常低效的 - 但是如果它適合你... –

+0

任何替代品都會非常受歡迎 – abhimanyu

0

我有一種感覺,樣本數據是在簡化,所以我可能是相當錯誤的,但這個貌似相同的查詢解析數據只有一次。

SELECT activity_id, user_id, 
user_id AS counter 
FROM eventedge_ticket_activity 
WHERE activity_id in(1,2) 

BTW由marmeladze提供的答案也應該與我在評論