是的,你可以在GROUP逗號分隔的多個列或表達式BY子句酷似OP一樣。舉一個例子,從the MySQL docs:
SELECT id, FLOOR(value/100) AS val
FROM tbl_name
GROUP BY id, val;
不要使用CONCAT()
不是作爲the accepted answer suggests;它會給你不正確的結果,因爲CONCAT('foo', 'bar', 'baz')
和CONCAT('fo', 'obarb', 'az')
是相同的。
由OP公佈的SQL很好,因爲它是。他收到的錯誤消息一定是由他在發帖之前刪除的其他內容引起的;他發佈的代碼不會產生他說的錯誤。這裏是證明:
mysql> CREATE TABLE averagegrade (mjr int, lev int, average int);
Query OK, 0 rows affected (0.12 sec)
mysql> INSERT INTO averagegrade VALUES (5,6,7), (5,6,7), (100, 200, 300);
Query OK, 3 rows affected (0.05 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql>
mysql> -- OP's SQL, copied verbatim:
mysql> CREATE VIEW `uniaverage` AS
-> SELECT `averagegrade`.`mjr`,`averagegrade`.`lev`,
-> AVG(`averagegrade`.`average`) AS `uniAVG`
-> FROM `averagegrade` GROUP BY `averagegrade`.`lev`, `averagegrade`.`mjr`;
Query OK, 0 rows affected (0.03 sec)
mysql>
mysql> SELECT * FROM uniaverage;
+------+------+----------+
| mjr | lev | uniAVG |
+------+------+----------+
| 5 | 6 | 7.0000 |
| 100 | 200 | 300.0000 |
+------+------+----------+
2 rows in set (0.00 sec)
你確定錯誤是指'GROUP BY'子句嗎?你給的語法是合適的,IWFM。 – outis 2010-05-01 15:44:17
我99%肯定,因爲我的查詢中沒有operan,除了group之外,有2個參數 – Am1rr3zA 2010-05-01 19:17:41
,不管你信不信,這還不夠,部分原因是還有其他操作數(例如AVG)。無論您發佈的查詢與您運行的查詢之間存在多麼微不足道的差異,是否存在差異?你使用的是什麼版本的MySQL?平均格柵的類型是什麼?實際上,表平均等級的定義是什麼(使用'SHOW CREATE TABLE averagegrade'?'SELECT'語句中的EXPLAIN'的結果是什麼(刪除'CREATE VIEW'子句)?嘗試從命令運行查詢看看它是否告訴你在聲明中問題所在的位置 – outis 2010-05-01 22:16:50