繁体   English   中英

MySql - 如果语句结果为 select 条件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM