[英]MySql - where condition on select if statment result
我有以下示例
SELECT
oa.country_id,
s.country_id,
(IF(
s.country_id = oa.country_id,
DATE_ADD(DATE(so.created_at), INTERVAL 2 DAY),
DATE_ADD(DATE(so.created_at), INTERVAL 5 DAY)
)
) AS inter
我想添加 where 条件如下:
WHERE inter >= CURDATE() - INTERVAL DAYOFWEEK(CURDATE())+6 DAY
AND inter > CURDATE() - INTERVAL DAYOFWEEK(CURDATE())-1 DAY;
是否可以在“inter”结果中添加位置? 或者我需要在 WHERE 中重复相同的 if 语句查询两次?
谢谢你。
您不能在WHERE
子句中使用inter
,因为那里不理解列别名。 您可以使用 CTE 或子查询。
但是,MySQL 扩展了HAVING
对非聚合查询的使用。 所以你可以添加一个HAVING
子句:
HAVING inter >= CURDATE() - INTERVAL DAYOFWEEK(CURDATE())+6 DAY AND
inter > CURDATE() - INTERVAL DAYOFWEEK(CURDATE())-1 DAY;
注意:表达式的逻辑看起来不正确 - 但这是您问题中的表达式。 第一部分限制性更强,因此第二部分是多余的。 也许您打算<
为其中之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.