1

我有一个包含用户信息的表。

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 新手。这个查询是如何工作的?谢谢。

4

2 回答 2

0

其实就是表达。它比较表达式结果而不是分组的列值。

于 2013-07-22T09:11:23.540 回答
0

now()与 group by 的功能不是那么有效。

它将始终返回所选数据的第一行。

您始终需要group by在查询的子句中指定列名。这是group by的教程链接。它指定您可以将哪个聚合函数与 group by 一起使用。

now()使用 group by return 将从查询中选择数据并匹配第一个数据,它将是第一行。

于 2013-07-22T09:11:30.817 回答