我們定期向我們的訂閱者發送簡訊。我們希望刪除永不開放我們的電子郵件的用戶,也不會閱讀他們。如何簡化/改進此mysql刪除查詢
下面是我爲此所做的查詢 - 它刪除了未回覆5封電子郵件或更多郵件的訂閱者/他們的活動。
這似乎有點尷尬(而且很大!),我想知道是否有一個更簡單,更優雅/有效的方式來執行此查詢(可能與連接??),因爲它需要一段時間。
DELETE FROM list_subscriber_events where
list_subscriber_events.subscriberid IN
(SELECT list_subscribers.emailaddress, list_subscriber_events.subscriberid, list_subscriber_events.eventtype, count(list_subscriber_events.eventtype) as total
FROM `list_subscriber_events`
LEFT JOIN list_subscribers on
list_subscriber_events.subscriberid=list_subscribers.subscriberid
AND list_subscribers.subscriberid<>''
AND list_subscriber_events.subscriberid<>''
AND list_subscribers.subscriberid NOT IN (select subscriberid from stats_emailopens)
AND list_subscribers.subscriberid NOT IN (select subscriberid from stats_linkclicks)
GROUP BY list_subscriber_events.subscriberid
HAVING count(list_subscriber_events.eventtype) > 5);
這個查詢可以工作沒有世俗的方式! subscriber_id如何在許多列中出現? – Strawberry
你爲什麼要刪除用戶和事件?只需在創建電子郵件列表時過濾掉過時的地址即可。 –
你可以保留一個你通過電子郵件發送給別人的單獨的表格,以及他們回覆時的數量。使用該表來驅動你的'清理'?即有兩個單獨的進程彼此並排運行。 1)當前系統假設每個人都存在。 2)一個單獨的系統試圖確認每個人都存在,並且'標記'可能'失蹤人員'。 –