通常,一旦开始GROUPING,则SELECT中列出的每个列都必须是GROUP中的列或其中的某个集合。假设您有一个这样的表:
| ID | Name | City |
| 1 | Foo bar | San Jose |
| 2 | Bar foo | San Jose |
| 3 | Baz Foo | Santa Clara |
如果要获取数据库中所有城市的列表,然后尝试执行以下操作:
SELECT * FROM table GROUP BY City
...那会失败,因为您要查询的是GROUP BY子句中没有的列(ID和名称)。您可以改为:
SELECT City, count(City) as Cnt FROM table GROUP BY City
...这将使您:
| City | Cnt |
| San Jose | 2 |
| Santa Clara | 1 |
...但不会获得您的ID或姓名。您可以使用子选择或自我联接来做更复杂的事情,但是基本上您无法做到。进一步分解您的问题(您希望数据看起来像什么?),然后从那里去。
祝你好运!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句