説明
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