我确信这是一个简单的修复方法,但我在任何地方都找不到它。我正在尝试使用 AND 来影响查询的结果。查询如下。
select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff from table1 where log_in < date_opened;
所以第一个查询工作正常。它只给我log_in日期小于date_opened的行,然后是两者之间的总天数差异,这很棒。但是,我希望在查询中添加 AND 以排除某些总计。例如下面的例子:
select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff from table1 where log_in < date_opened and date_diff > 1;
问题是别名列 date_diff 未被识别为真实列,因此我收到一条错误消息。我尝试使用 HAVING 而不是 AND,但这不起作用(不是我想象的那样)。我基本上想排除零的行。有人知道我会用什么来代替“and date_diff > 1”吗?
P粉3080890802024-03-23 10:52:05
重复 where 子句中的表达式(即使用 datediff(log_in, date_opened) > 1
而不是 date_diff > 1
),或者使用派生表,然后在封闭的查询中添加条件。
使用派生表的示例:
select first_name, log_in, date_opened, date_diff from ( select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff from table1 where log_in < date_opened ) where date_diff > 1