
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.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度発行にしました)ので次の機会に是非参考にさせて頂きます。
丁寧なご説明ありがとうございました。
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列は・・・[正]
お探しの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の容量について
-
グループからランダムに抽出す...
-
mysqlでJOIN文
-
PHP上のSQLで、SELECT文をいく...
-
テーブル作成時のNULLの列につ...
-
DBの文字コード切り替え
-
ビューに追加・削除が出来ません。
-
会社の飲み会の幹事になり、座...
-
「テーブルに座って……」という...
-
L2SWはARPテーブルを持っている?
-
SQLにて指定日付より前、かつ最...
-
テーブル名をカラムとして取得...
-
SQLでSUMなどの関数でデータが...
-
アクセス レコードセットを更...
-
飲み会で、座敷orテーブルどち...
-
MySQL Workbench で、テーブル...
-
テーブルリンク リンク元を知...
-
SELECT 文の NULL列は?
-
PUTTYテーブルでエラーが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一つ前に戻るには…
-
最大値を持つレコードを削除したい
-
mysqlでJOIN文
-
mysqlのフィールド名
-
テーブルが作成できない
-
mysqlで外部キーをつけたカラム...
-
2つのテーブルの連動
-
PHP上のSQLで、SELECT文をいく...
-
MySQLで、テーブル内のフィール...
-
SQL一発でカレンダー表示は可能...
-
MySQLのテーブルタイプの変更に...
-
外部キー、親を調べるにはshow ...
-
SQL文による残業時間の算出につ...
-
python2.5を使用してSQLite3の...
-
ビューに追加・削除が出来ません。
-
グループからランダムに抽出す...
-
1000万件のデータをmysqlで効率...
-
連番の質問
-
mysqlのデータベースを復元した...
-
DBの文字コード切り替え
おすすめ情報