MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQL GROUP BY句はDISTINCT句のようにどのように動作しますか?


集計関数を使用せずにSELECTステートメントでGROUPBY句を使用すると、DISTINCT句のように動作します。たとえば、次の表があります-

mysql> Select * from testing;
+------+---------+---------+
| id   | fname   | Lname   |
+------+---------+---------+
|  200 | Raman   | Kumar   |
|  201 | Sahil   | Bhalla  |
|  202 | Gaurav  | NULL    |
|  203 | Aarav   | NULL    |
|  204 | Harshit | Khurana |
|  205 | Rahul   | NULL    |
|  206 | Piyush  | Kohli   |
|  207 | Lovkesh | NULL    |
|  208 | Gaurav  | Kumar   |
|  209 | Raman  | Kumar    |
+------+---------+---------+
10 rows in set (0.00 sec)

列「Lname」でDISTINCT句を使用すると、MySQLは次の結果セットを返します。

mysql> select Distinct LNAME from testing;
+---------+
| LNAME   |
+---------+
| Kumar   |
| Bhalla  |
| NULL    |
| Khurana |
| Kohli   |
+---------+
5 rows in set (0.00 sec)

次のようにGROUPBY句を使用すると、DISTINCT-

を使用した場合と同じ結果セットを取得できます。
mysql> Select LNAME from testing GROUP BY Lname;
+---------+
| LNAME   |
+---------+
| NULL    |
| Bhalla  |
| Khurana |
| Kohli   |
| Kumar   |
+---------+
5 rows in set (0.04 sec)

MySQLによって返される両方の結果セットの違いを観察できます。GROUPBY句を使用してMySQLクエリによって返される結果セットは並べ替えられ、対照的に、DISTINCT句を使用してMySQLクエリによって返される結果セットは並べ替えられません。


  1. MySQLを使用してグループでランダムに注文するにはどうすればよいですか?

    まずテーブルを作成しましょう- mysql> create table DemoTable    (    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    Value char(1)    ); Query OK, 0 rows affected (0.66 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable(Value) values('X'); Quer

  2. MySQL GROUP BY句の行を並べ替える、または選択する方法は?

    まずテーブルを作成しましょう- mysql> create table DemoTable1572    -> (    -> StudentId int,    -> StudentMarks int,    -> StudentName varchar(20)    -> ); Query OK, 0 rows affected (0.56 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert i