![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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文の実行結果に空白行を...
-
SQL文の入れ子について
-
割合(パーセント)を求めるには?
-
SQLにて順列の抽出
-
SQLローダーCSV取込で、囲み文...
-
【PL/SQL】FROM区に変数を使う方法
-
group byの並び順を変えるだけ...
-
エクセル、並び替え正しくソー...
-
テーブルの最後(最新)のレコー...
-
並べ替えについて
-
SELECT FOR UPDATE で該当レコ...
-
実人数と延べ人数
-
「数字で始まらない」ものを抽...
-
2回実行のSQL文を1回にしたい
-
where 都道府県名 and 県庁所在...
-
SQLで曜日のソートを月火水木金...
-
配列に指定した値が含まれてい...
-
updateで複数行更新したい
-
ファイルの漢数字の順番につい...
-
PL/SQLでフェッチでNULLの項目...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
select文の実行結果に空白行を...
-
割合(パーセント)を求めるには?
-
SQL文の入れ子について
-
空きのID番号を取得する方法
-
SQLで連続したカラムが何個ある...
-
Mysqlで変数を使ったSELECT文の...
-
mysql5でGROUP BYごとにLIMIT??
-
SQLだけでselect結果に定数を加...
-
SQLにて順列の抽出
-
直近のデータのリストを取得したい
-
条件付けで集計したものをUNION...
-
任意の上位の集計を取得するには?
-
時間帯テーブルから直近空き時...
-
Select文1 マイナス Select文2
-
時間帯テーブルから直近空き時...
-
min について
-
LIMIT句で少なくとも1行は選択...
-
MySQLで合計と小計の計算方法を...
-
GROUP BY句の集計について
-
1つのSQLにしたいです
おすすめ情報