🖥

MySQL – GROUP BY で最小/最大の値を持つレコード1件ずつだけに絞り込む

2023/09/01に公開

クエリの例

サブクエリでいちどIDリストを得てからWHEREに渡すと良さそうだ

SELECT * FROM examples WHERE id IN (
  SELECT MIN(id) FROM examples GROUP BY name
);

結果

id | name
-- | --
1 | Alice
1 | Bob
1 | Carol

テーブル

id | name
-- | --
1 | Alice
2 | Alice
3 | Alice
1 | Bob
2 | Bob
3 | Bob
1 | Carol
2 | Carol
3 | Carol
CREATE TABLE examples (
  id INT,
  name VARCHAR(255)
);

INSERT INTO examples (id, name) VALUES (1, "Alice");
INSERT INTO examples (id, name) VALUES (2, "Alice");
INSERT INTO examples (id, name) VALUES (3, "Alice");

INSERT INTO examples (id, name) VALUES (1, "Bob");
INSERT INTO examples (id, name) VALUES (2, "Bob");
INSERT INTO examples (id, name) VALUES (3, "Bob");

INSERT INTO examples (id, name) VALUES (1, "Carol");
INSERT INTO examples (id, name) VALUES (2, "Carol");
INSERT INTO examples (id, name) VALUES (3, "Carol");

補足

MINをMAXに変えればidが最大値のものを得る

Fiddle

https://www.db-fiddle.com/f/6azxWAoK6S5Hxf3DYGgNg6/3

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2023-01-08

Discussion