帮助构造MySQL SELECT语句

时间:2011-09-19 20:19:44

标签: php mysql

我有一个交易表,可以在我们的电子邮件营销消息中使用跟踪像素来注册电子邮件。我正在尝试构建一个查询,该查询将为我提供事务表中的记录,其中最后记录的电子邮件读取时间超过6周。原因是,这些交易没有“参与”我们的电子邮件营销,我需要更新其中一个订阅者字段以反映(因此他们可以收到不同类型的电子邮件)。

如果我用英文写出来,声明应该是这样的:

  

从6周以前订户ID出现的交易中选择行,但过去6周内不存在。

那么,最初的想法是创建我在过去6周内打开过电子邮件的记录集,然后将其与表格的其余部分进行比较?我可以在一个声明中这样做,还是应该将它分成两个?

提前感谢任何可以提供帮助的人。

4 个答案:

答案 0 :(得分:3)

SELECT SubscriberId
    FROM TransactionTable
    GROUP BY SubscriberId
    HAVING MAX(ReadDate) < DATE_SUB(NOW(), INTERVAL 6 WEEK)

答案 1 :(得分:0)

不需要花哨的数学。您的要求归结为一个简单的<条款:任何在过去6周内没有记录交易的用户:

SELECT userID
FROM transactionstable
WHERE MAX(timestampfield) < DATE_SUB(now(), INTERVAL 6 WEEK)
GROUP BY userID

答案 2 :(得分:0)

定义一个显示过去6周活动的字段。我的意思是整数0或1.然后:

SELECT * FROM transtable WHERE activityfield = 0 AND datefield < DATE_SUB(now(), INTERVAL 6 WEEK)

答案 3 :(得分:0)

如果您使用的数据库支持Oracle SQL,请尝试以下操作:

SELECT * from transactions
WHERE subscribed_date < SYSDATE-(6*7);