【发布时间】:2015-01-27 03:12:10
【问题描述】:
我正在为如何编写此查询而苦苦挣扎,但找不到可以帮助我解决问题的答案。
考虑下表:
-----------------------------------------------
| ID | Value1 | Value2 | Value3 | Date |
-----------------------------------------------
| 1 | 10 | 23 | 30 | 2015-01-01 |
-----------------------------------------------
| 1 | 11 | 33 | 40 | 2015-02-01 |
-----------------------------------------------
| 2 | 26 | 93 | 20 | 2015-01-01 |
-----------------------------------------------
| 2 | 11 | 33 | 50 | 2015-02-01 |
-----------------------------------------------
我想检索 Date 为 2015-01-01 的 Value1 的平均值
我以为
SELECT AVG(PAM_1) FROM MyTable WHERE DATE = 2015-01-01
可以,但当然不行。我知道我可能需要使用 HAVING,但我很困惑是否还必须使用 GROUP BY 以及是否需要 AS(某物)部分。
编辑
问题与查询无关。我通过这样的变量提供日期:
$sth = $db->prepare("SELECT AVG(Value1) FROM MyTable WHERE DATE = $date");
这对于准备好的语句是不可能的。
【问题讨论】:
-
"但它当然不会" --- 为什么不应该这样做并不明显
-
你在做算术:
2015 - 1 - 1 = 2013,它转换为空日期值 -
为此使用单引号和双引号。例如“SELECT AVG(PAM_1) FROM MyTable WHERE DATE = '”。 $日期。 "'"
-
这不是因为我使用的是准备好的语句,而是直接插入了保存日期的变量。