【发布时间】:2017-04-03 15:54:28
【问题描述】:
我希望从单个 MySQL 表中提取:
- 向今天生日且在接下来的 06 天内生日的用户发送电子邮件。
查询:
SELECT *
FROM table_01
WHERE DATE_ADD(date_of_birth, INTERVAL YEAR(CURDATE())-YEAR(date_of_birth)
+ IF(DAYOFYEAR(CURDATE()) = DAYOFYEAR(date_of_birth),1,0) YEAR)
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 6 DAY);
- 向年仅 01 岁 / 365 天的用户发送电子邮件。
查询:
SELECT *, TIMESTAMPDIFF(day, date_of_registration, NOW())
FROM table_01
WHERE TIMESTAMPDIFF(day, date_of_registration, NOW()) = 365;
-
向男性用户发送电子邮件。
SELECT * FROM table_01 where gender = male;
我使用了 JOIN、UNION 命令但仍然无法正常工作。
请指教。
【问题讨论】:
-
您能否添加您的表架构以获得更好的想法...
-
不需要连接、联合等。简单地将 3 个 where 子句条件与 OR 结合起来
-
where gender = male在这里已经失败了;引用字符串文字。 -
如果要使用 UNION,则所有三个查询的选定列数必须相等。在第二个查询中,您又选择了一列 (
TIMESTAMPDIFF(day, date_of_registration, NOW()))。
标签: mysql