
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文の実行結果に空白行を...
-
割合(パーセント)を求めるには?
-
timestamp型のgroup
-
SQLで連続したカラムが何個ある...
-
任意の上位の集計を取得するには?
-
時間帯テーブルから直近空き時...
-
SQLローダーCSV取込で、囲み文...
-
Oracleで「文字が無効です」の...
-
count関数の値をwhere句で使用...
-
テーブルの最後(最新)のレコー...
-
MySQLで最小値
-
MysqlのSQL文について
-
チェックボックス連結
-
SELECT FOR UPDATE で該当レコ...
-
「数字で始まらない」ものを抽...
-
SQLで条件にヒットしたレコード...
-
単一グループのグループ関数で...
-
Mysqlについて、どの程度の処理...
-
select文
-
VBScriptにて、csvファイルから...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
select文の実行結果に空白行を...
-
割合(パーセント)を求めるには?
-
Mysqlで変数を使ったSELECT文の...
-
24時間以内に更新されたデータ...
-
時間帯テーブルから直近空き時...
-
集計されたテーブルの結合
-
select文について
-
GROUP BY句の集計について
-
timestamp型のgroup
-
空きのID番号を取得する方法
-
まだSQL初心者なので、よくわか...
-
ON DUPLICATE KEY UPDATE
-
条件付けで集計したものをUNION...
-
SQLで連続したカラムが何個ある...
-
直近のデータのリストを取得したい
-
クロス集計のSQL
-
複数のテーブルの集計
-
SQLにて順列の抽出
-
mysql5でGROUP BYごとにLIMIT??
-
SQL文の入れ子について
おすすめ情報