我正在开发一个系统,使用其他程序员编写的MySQL查询,并调整他的代码。施放还是不施放?
我有三个问题:
1.
一个查询的有这个select语句:
SELECT
[...]
AVG(mytable.foo, 1) AS 'myaverage'`,
是在AVG(mytable.foo, 1) AS 'myaverage'
1合法?我可以找到没有文档来支持它的使用?
2.
这样的结果让我到小数点后2位的平均值,这是为什么?
3.
我正在使用它来创建临时表。所以:
(SELECT
[...]
AVG(`mytable`.`foo`, 1) AS `myaverage`,
FROM
[...]
WHERE
[...]
GROUP BY
[...])
UNION
(SELECT
[...]
FROM
[...]
WHERE
[...]
GROUP BY
[...])
) AS `tmptable`
ORDER BY
`tmptable`.`myaverage` DESC
当我整理这个专栏中,我得到输出,表明该平均值被存储为一个字符串表,所以结果是这样的:
9.3
11.1
为了解决这个问题,我应该使用什么?
我应该使用CAST还是CONVERT,因为DECIMAL(我读的基本上是二进制),BINARY本身还是UNSIGNED?
或者,有没有一种方法可以说明myaverage
应该是一个整数,当我在AS语句中命名它时?
喜欢的东西:
SELECT
AVG(myaverage) AS `myaverage`, INT(10)
感谢。
9.3 <11.1如何显示它被存储为一个字符串?通常它是“11.1”<“9.3”但是9.3 <11.1 – 2011-07-01 20:21:03
将这个问题分解成*不同的SO帖子可能会更好。第一次关注#1 /#2,第二次关注#3。欢迎来到SO。问题2的 – 2011-07-01 20:23:54
:“在MySQL 5.0.3之前,SUM()和AVG()为所有数字参数返回DOUBLE。” – Sinan