質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

891閲覧

MySQLでGROUP BYの最大値を含むレコード1行を取得したい(なるべくシンプルに)

hvordan

総合スコア11

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2019/06/17 13:44

編集2019/06/17 13:45

前提・実現したいこと

MySQL5.5系で、以下のようなテーブルから顧客毎の直近の購入履歴1行をそのまま取得したい時、
どのようなクエリを書くのがシンプルまたは一般的なのか教えてほしいです。

テーブル例
|ID|顧客ID|購入日|商品名|
|:--|:--:|--:|
|1|1|2019-06-01|タオル|
|2|1|2019-06-02|スポンジ|
|3|1|2019-06-03|スリッパ|
|4|2|2019-06-04|洗剤|
|5|2|2019-06-05|傘|
|6|3|2019-06-06|シャンプー|

結果
|ID|顧客ID|購入日|商品名|
|:--|:--:|--:|
|3|1|2019-06-03|スリッパ|
|5|2|2019-06-05|傘|
|6|3|2019-06-06|シャンプー|

試したこと

顧客IDでGROUP BYして購入日のMAXを取れば顧客毎の直近の購入日は取得できますが、
そこから商品名を引っ張ってくるのをどのようにすればいいのか…

やりたいことは簡単なはずなのに、クエリをどう組み立てるのがいいのか悩んでいます。
できるだけシンプルに書く方法を教えてもらいたいです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こんな感じで

SQL

1create table tbl(ID int primary key,顧客ID int, 購入日 date,商品名 varchar(20)); 2insert into tbl values 3(1,1,'2019-06-01','タオル'), 4(2,1,'2019-06-02','スポンジ'), 5(3,1,'2019-06-03','スリッパ'), 6(4,2,'2019-06-04','洗剤'), 7(5,2,'2019-06-05','傘'), 8(6,3,'2019-06-06','シャンプー'); 9select * from tbl as t1 10where not exists(select 1 from tbl where 顧客ID=t1.顧客ID and 購入日>t1.購入日);

投稿2019/06/18 03:05

yambejp

総合スコア114775

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hvordan

2019/07/01 23:49

コメントが遅れました。このやり方だと条件が指定できるのでまさに私が求めていた方法です。自分だと思い至らなかったので回答いただけて助かりました。ありがとうございます!
guest

0

顧客IDでGROUP BYしてIDのMAX一覧とJOINしたら?

IDと購入日の整合性がとれてるのが前提条件で。
あと、同じ日に購入してるものでも最新しか出ませんが。

投稿2019/06/17 14:17

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問