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 ステートメントには、次のように常に 1 つ以上の列名が続きます。

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 に答える