MySQL组没有列名

时间:2013-07-22 09:01:52

标签: mysql sql

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

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

2 个答案:

答案 0 :(得分:0)

事实上,这是表达方式。它比较表达式结果而不是分组的列值。

答案 1 :(得分:0)

now()与群组的功能不太有效。

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

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

带有group by return的

now()将从查询中选择数据并匹配第一行,它将是第一行。