説明
GROUP_ID 関数は、GROUP BY 句内の重複するグループに関連付けられた一意の識別子を返します。通常、ROLLUP または CUBE 操作を含むクエリで使用され、同じグループセットを生成する異なる行を区別するために用いられます。
使用上の制限と注意事項
GROUP_IDはWHERE句、結合条件、集約関数の内部、またはグループ属性の定義には使用できません。GROUP_ID関数が返すのは、クエリ結果内でのグループセットの出現回数を示す数値です。GROUP_IDの使用には、パラメータは不要です。
構文
GROUP_ID()
例
t1 という名前のテーブルを作成し、テーブル t1 に複数の行のデータを挿入します。
-- テーブル t1 を作成
CREATE TABLE t1 (c1 INT, c2 INT, c3 INT, c4 INT);
-- テーブル t1 にデータを挿入
INSERT INTO t1 VALUES (1, 1, 1, 1);
INSERT INTO t1 VALUES (1, 1, 1, 2);
INSERT INTO t1 VALUES (1, 1, 2, 2);
INSERT INTO t1 VALUES (1, 2, 2, 2);
INSERT INTO t1 VALUES (2, 2, 2, 2);
-- クエリしてデータを集計し、GROUP BY と ROLLUP を使用する
SELECT c1, c2, c3, c4, GROUP_ID()
FROM t1 GROUP BY c1, ROLLUP(c1, c2, c3, c4) ORDER BY c1, c2, c3, c4;
GROUP_ID() 関数は、GROUP BY 句が返す重複レコードを識別するために使用されます。例えば、c1=1 の2行の同じ集計レコードに対して、GROUP_ID() はそれぞれ0と1になります。
実行結果は次のとおりです:
+------+------+------+------+------------+
| C1 | C2 | C3 | C4 | GROUP_ID() |
+------+------+------+------+------------+
| 1 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 2 | 0 |
| 1 | 1 | 1 | NULL | 0 |
| 1 | 1 | 2 | 2 | 0 |
| 1 | 1 | 2 | NULL | 0 |
| 1 | 1 | NULL | NULL | 0 |
| 1 | 2 | 2 | 2 | 0 |
| 1 | 2 | 2 | NULL | 0 |
| 1 | 2 | NULL | NULL | 0 |
| 1 | NULL | NULL | NULL | 0 |
| 1 | NULL | NULL | NULL | 1 |
| 2 | 2 | 2 | 2 | 0 |
| 2 | 2 | 2 | NULL | 0 |
| 2 | 2 | NULL | NULL | 0 |
| 2 | NULL | NULL | NULL | 0 |
| 2 | NULL | NULL | NULL | 1 |
+------+------+------+------+------------+
16 rows in set