【问题标题】:sql query: BETWEEN [duplicate]sql查询:BETWEEN [重复]
【发布时间】:2016-11-17 14:04:59
【问题描述】:

我正在尝试执行查询以获取 between 数据值。

我在这里看到了一些问题,但我的查询更复杂。

这是查询:

SELECT calendar.datefield AS DATE, 
IFNULL( count( lead.insertDate ) , 0 ) AS task
FROM lead 
RIGHT JOIN calendar ON ( DATE( lead.insertDate ) = calendar.datefield ) 
AND lead.lpid =  '40' 
WHERE insertDate BETWEEN '2016-01-05' AND '2016-01-23'
GROUP BY DATE

我认为问题出在查询语法上,在我添加 where 行之前,查询运行良好。

【问题讨论】:

标签: mysql between


【解决方案1】:

您已将条件置于where 子句之外。试试这个。

SELECT calendar.datefield AS DATE, 
IFNULL( count( lead.insertDate ) , 0 ) AS task
FROM lead 
RIGHT JOIN calendar ON ( DATE( lead.insertDate ) = calendar.datefield )  
WHERE insertDate BETWEEN '2016-01-05' AND '2016-01-23'
AND lead.lpid =  '40'
GROUP BY DATE

【讨论】:

  • 如果AND lead.lpid = '40' 包含在WHERE 子句中,那么它的行为类似于inner join。但他正在尝试LEFT JOIN
  • 我看不到 OP 要求左连接。
  • 抱歉是RIGHT JOIN。如果该条件放在WHERE 子句中,那么它的行为类似于INNER JOIN
  • 我猜不是。即使左表没有匹配项,右连接也会返回右表中的所有行。将条件放在 where 子句中与它无关。
猜你喜欢
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多