我有一个包含用户信息的表。
mysql> desc accounts;
+-------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------+------+-----+---------+----------------+
| cid | int(11) | NO | PRI | NULL | auto_increment |
| username | text | YES | | NULL | |
| password | text | YES | | NULL | |
| mysignature | text | YES | | NULL | |
| is_admin | varchar(5) | YES | | NULL | |
+-------------+------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)
普通group by语句后跟一个或多个列名,如下所示:
select * from accounts group by cid;
只是一个示例,通常group by
适用于sum()
等聚合函数。
我发现一些后跟一个没有列名的表达式,我无法理解:
mysql> select username from accounts group by now();
+----------+
| username |
+----------+
| admin |
+----------+
1 row in set (0.00 sec)
我是MySQL新手。这个查询如何工作? 感谢。
答案 0 :(得分:0)
事实上,这是表达方式。它比较表达式结果而不是分组的列值。
答案 1 :(得分:0)
now()
与群组的功能不太有效。
它将始终返回所选数据的第一行。
您始终需要在查询中的group by
子句中指定列名。以下是group by的link教程。
它指定可以与group by一起使用的聚合函数。
now()
将从查询中选择数据并匹配第一行,它将是第一行。