A B C
1 2 10-01
2 3 10-01
3 2 10-02
4 1 10-03
5 3 10-04
MYSQLで上のようなTABLEから、B列についてCが最新の日付の行を1行ずつ、且つ全列抽出したいです。想定する結果は下記の通りです。
3 2 10-02
4 1 10-03
5 3 10-04
SELECT DISTINCT A FROM table_name ORDER BY C DESC
だとB,C列は抽出されず、DIATINCT A,B,Cだと全行抽出されてしまう。
GROUP BY B は平均や集計なら使えるでしょうが最新の1行でないし。
どんなSQL文にすれば良いのでしょうか。よろしくお願いします
No.1
- 回答日時:
こんな感じで。
SELECT SUBSTRING( MAX( CONCAT(c,a) ), 6) AS 'a' ,SUBSTRING( MAX( CONCAT(c,b) ), 6) AS 'b2',MAX(c) AS 'c' FROM table_name GROUP BY b order by a;
この回答への補足
ご回答ありがとうございます。なるほど、結合させてMAXとって後ろだけ使う、ですか。全く思いつかなかったですw(゜o゜)wただもし長さが変なcが混ざってた場合のa,bの抽出が心配な気もします。6はその長さのことですよね?
あと下記訂正です。
>SELECT DISTINCT A FROM table_name ORDER BY C DESCだとB,C列は抽出されず[誤]
⇒SELECT DISTINCT B FROM table_name ORDER BY C DESCだとA,C列は・・・[正]
No.2ベストアンサー
- 回答日時:
(1)MySQL バージョン5.0以降
まだ開発中バージョンですが、サブクエリがサポートされています。
SELECT * FROM table_name
WHERE (B,C) IN(SELECT B,MAX(C) FROM table_name
GROUP BY B);
(2)MySQL バージョン5.0より前
B列の値毎の最新日付を、一旦、テンポラリテーブル(*1)に格納する方法を示します。
(a)テンポラリテーブルの定義
CREATE TEMPORARY TABLE w_tbl(B B列のデータ型,C C列のデータ型);
(b)操作
INSERT INTO w_tbl(B,C)
SELECT B,MAX(C) FROM table_name
GROUP BY B;
SELECT x.A,x.B,x.C FROM table_name AS x,w_tbl AS y
WHERE x.B=y.B AND x.C=y.C;
*1 MySQL バージョン 3.23 以降では、テーブルの作成時に TEMPORARY キーワードを指定することができます。テンポラリテーブルは現在の接続の間のみ有効で、接続が閉じると自動で削除されます。
お礼が遅くなりすみませんでした。
テンポラリテーブルという方法があったのですね。
残念ながらご回答頂いた時は既に作成済でした(バージョン5.0より前でサブクエリは使えず結局SQL2度発行にしました)ので次の機会に是非参考にさせて頂きます。
丁寧なご説明ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- PostgreSQL SQLで検索結果の記事を表示したい 1 2022/04/28 21:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一つ前に戻るには…
-
最大値を持つレコードを削除したい
-
MySQLのテーブル設計について
-
テーブル作成時のエラーについ...
-
テーブルが作成できない
-
副問合せ?の書き方
-
SELECT 文の NULL列は?
-
ROWNUMでUPDATEをしたいのです...
-
SQL、2つのテーブルで条件一致...
-
テーブルリンク リンク元を知...
-
テーブル名をカラムとして取得...
-
男性と2人で飲食店に行きテーブ...
-
面接のときテーブルが正面に。...
-
テーブルで一番古いレコードだ...
-
accessでレコード更新直後の反...
-
テーブルに存在しない列をselec...
-
SQLにて指定日付より前、かつ最...
-
SQLで違うテーブルの値を比較し...
-
「テーブルに座って……」という...
-
Notion@リレーション値の取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一つ前に戻るには…
-
mysqlのフィールド名
-
最大値を持つレコードを削除したい
-
mysqlでJOIN文
-
グループからランダムに抽出す...
-
1列について重複行を除いて全列...
-
SQL一発でカレンダー表示は可能...
-
mysqlで外部キーをつけたカラム...
-
矛盾していないでしょうか?
-
ビューに追加・削除が出来ません。
-
1000万件のデータをmysqlで効率...
-
テーブルが作成できない
-
【ストアドプロシージャ】条件...
-
挿入先テーブルに存在しないレ...
-
SQL内でループさせるような検索文
-
PHP上のSQLで、SELECT文をいく...
-
mysqlのデータベースを復元した...
-
複数の列にまたがってユニーク...
-
Waiting for table lockエラー...
-
MySQL INSERT文 エラー
おすすめ情報