我正在使用別名。
以下是我的查詢。我想避免用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
它提供了以下結果:
我怎麼能跳過櫃檯與行NULL
?
我正在使用別名。
以下是我的查詢。我想避免用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
它提供了以下結果:
我怎麼能跳過櫃檯與行NULL
?
未經測試,但下面應該工作。
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
下面是查詢成功運行。
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'
這是非常低效的 - 但是如果它適合你... –
任何替代品都會非常受歡迎 – abhimanyu
我有一種感覺,樣本數據是在簡化,所以我可能是相當錯誤的,但這個貌似相同的查詢解析數據只有一次。
SELECT activity_id, user_id,
user_id AS counter
FROM eventedge_ticket_activity
WHERE activity_id in(1,2)
BTW由marmeladze提供的答案也應該與我在評論
不這麼認爲計數器提到的變化工作不會在where子句中可以看出。只要沒有設置only_full_group_by,只要改變爲有效就可以工作。 –
#1054 - 'where子句'中的未知列'counter' – abhimanyu