我正在開發一個系統,使用其他程序員編寫的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