
Mysqlの件で教えてください。
Mysqlのバージョンは5.6.14です。
+---------------------------------------------------+
| juchuu | keishiki | starttime | koutei |
+----------+-----------+---------------+------------+
| 8830 | 7745 | 2013-12-1 14:24 | 1010 |
| 8830 | 7745 | 2013-12-2 8:30 | 1020 |
| 8835 | 7720 | 2013-12-3 15:20 | 1010 |
| 8840 | 7745 | 2014-01-01 8:30 | 1010 |
| 8840 | 7745 | 2014-01-01 13:30 | 1020 |
上記のテーブルで、
・keishiki=7745 のデータ
・直近のjuchuuのグループのリスト(4行目と5行目のリスト)
を取得する構文を教えてください。
juchuuグループは2行とは限りません。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
>starttimeが2番目に大きいもの
ちょっと特殊になりますがこんな感じ
select * from tbl where (juchuu,keisiki) in
(select juchuu,t2.keisiki from tbl as t2
inner join (select starttime,keisiki from tbl where keisiki=7745 order by starttime desc limit 1,1) as t3
on t2.starttime=t3.starttime and t2.keisiki=t3.keisiki)
ここでlimit 1,1の前の「1」が2番目に大きいという意味
つまりn番目に大きいものを含むはlimit n-1,1とする
1番大きいのはlimit 0,1でもいいが、maxを使った方がらく
keisikiごとに同じstarttimeがあるとは想定していません
同じものがある場合はさらに順位をつけるロジックが必要になるので
No.3
- 回答日時:
なるほど、そうなるとこんな感じ?
//元データ
create table tbl(juchuu int,keisiki int, starttime datetime,koutei int);
insert into tbl values(8830,7745,'2013-12-1 14:24',1010),(8830,7745,'2013-12-02 08:30',1020),(8835,7720,'2013-12-03 15:20',1010),(8840,7745,'2014-01-01 08:30',1010),(8840,7745,'2014-01-01 13:30',1020);
//結果
select * from tbl where (juchuu,keisiki) in
(select juchuu,keisiki from tbl where (starttime,keisiki) in
(select max(starttime),keisiki from tbl where keisiki=7745));
この回答への補足
ありがとうございます!できました。
3たびで申し訳ないのですが、starttimeが2番目に大きいものを含むリストを抽出だとどうなりますでしょうか。
No.2
- 回答日時:
>直近のjuchuuのグループのリスト
「直近」の定義があいまいです
juchuuが最大のものを意味するなら#1さんの通りですが
starttimeが最大のものを含むjuchuu全てとなると話は別です。
またstarttimeが同じものが出たときに複数のjuchuuを抜き出すのかどうかも
決めておく必要があります
なお最後に投入したデータという意味でしたら
投入日やauto_incrementを設定したカラムが必要です
見た目上selectで表示される最終行は「必ずしも」直近のデータだとは限りません
この回答への補足
ご回答ありがとうございます。
書き方も悪かったので、補足で説明させていただきます。
第一希望としては、keishikiが7745、かつ、starttimeが最大(直近)のものを含むリストを抽出したいと考えています。
第二希望として、keishikiが7745、かつ、juchuuが最大値のリストの抽出です。
度々申し訳ありませんが、よろしくお願いいたします。
No.1
- 回答日時:
・keishiki=7745 のデータ
Select * from table where keishiki=7745;
・直近のjuchuuのグループのリスト(4行目と5行目のリスト)
select * from table where juchuu =
(select max(juchuu) from table)
;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) エクセルVLOOK関数について 3 2022/07/05 08:45
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) エクセルの数式について教えてください。 7 2023/06/18 10:16
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
select文の実行結果に空白行を...
-
割合(パーセント)を求めるには?
-
24時間以内に更新されたデータ...
-
空きのID番号を取得する方法
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
【PL/SQL】FROM区に変数を使う方法
-
単一グループのグループ関数で...
-
group byの並び順を変えるだけ...
-
トランザクションログを出力せ...
-
Oracleで「文字が無効です」の...
-
並べ替えについて
-
アクセスのレポートでレコード...
-
AccessのSQL文で1件のみヒット...
-
int型フィールドにnullを登録で...
-
レコードの登録順がおかしい
-
BLOBやCLOBのパフォーマンスを...
-
複数のテーブルから値を合計出...
-
<SQL>重複しているデータの場合...
-
where句中のtrim関数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
select文の実行結果に空白行を...
-
割合(パーセント)を求めるには?
-
24時間以内に更新されたデータ...
-
Mysqlで変数を使ったSELECT文の...
-
SQLで連続したカラムが何個ある...
-
SQLにて順列の抽出
-
時間帯テーブルから直近空き時...
-
LIMIT句で少なくとも1行は選択...
-
空きのID番号を取得する方法
-
SQL文の入れ子について
-
直近のデータのリストを取得したい
-
重複レコードを調べる
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
単一グループのグループ関数で...
-
SQL*Loader Append
-
group byの並び順を変えるだけ...
-
【PL/SQL】FROM区に変数を使う方法
-
2つの列が同じ値の行を取得するSQL
-
アクセスのレポートでレコード...
おすすめ情報