次のようなテーブルから重複する spuid の最新の udate に該当する no (またはレコード)を取得したいのですが、うまくいきません。
+----+------------+---------------------+
| id | spuno | udate |
+----+------------+---------------------+
| 1 | SPU07-0001 | 2007-08-23 08:46:59 |
| 2 | SPU07-0001 | 2007-08-23 08:46:59 |
| 3 | SPU07-0002 | 2007-08-23 08:41:30 |
| 4 | SPU07-0003 | 2007-08-23 08:41:30 |
| 5 | SPU07-0004 | 2007-08-23 08:46:59 |
| 6 | SPU07-0005 | 2007-08-23 08:47:54 |
| 7 | SPU07-0006 | 2007-08-23 08:41:30 |
| 8 | SPU07-0006 | 2007-08-23 08:41:30 |
| 9 | SPU07-0006 | 2007-08-23 08:41:30 |
| 10 | SPU07-0006 | 2007-08-23 08:41:30 |
| 11 | SPU07-0006 | 2007-08-23 08:41:30 |
| 12 | SPU07-0006 | 2007-08-23 08:41:30 |
| 13 | SPU07-0001 | 2007-08-23 08:50:14 |
| 14 | SPU07-0001 | 2007-08-23 08:50:55 |
| 15 | SPU07-0001 | 2007-08-23 12:21:49 |
| 16 | SPU07-0001 | 2007-08-23 12:24:01 |
+----+------------+---------------------+
試したこと
SELECT id,spuno,MAX(udate) AS udate FROM tbl_report GROUP BY spuno;
結果は以下のようにudate は最新ですが、 no が最初の番号になります。
+----+------------+---------------------+
| id | spuno | udate |
+----+------------+---------------------+
| 1 | SPU07-0001 | 2007-08-23 12:24:01 |
| 3 | SPU07-0002 | 2007-08-23 08:41:30 |
| 4 | SPU07-0003 | 2007-08-23 08:41:30 |
| 5 | SPU07-0004 | 2007-08-23 08:46:59 |
| 6 | SPU07-0005 | 2007-08-23 08:47:54 |
| 7 | SPU07-0006 | 2007-08-23 08:41:30 |
+----+------------+---------------------+
申し訳ありませんが、ご教示お願いします。
No.2ベストアンサー
- 回答日時:
>SELECT id,spuno,MAX(udate) AS udate FROM tbl_report GROUP BY >spuno;
>結果は以下のようにudate は最新ですが、 no が最初の番号になりま
>す。
noとおっしゃっているのは フィールド名 idの事でしょうか?
spuno毎にグループ化し updateは最大値を取っていますが
id については記載がありません。DBやバージョンによって
異なるのですが
idも最大値でよいのであれば max(id)のように書きます。
idは最大値とは限らないのであれば 一旦 キーとなるものを
求めるSelect文を実行し 更に結合します。
例(DB環境を持っていませんので 検証していません)
SELECT T2.id,
T1.spuno,
T1.udate
FROM
(
SELECT spuno,MAX(udate) AS udate
FROM tbl_report
GROUP BY spuno)
AS T1
LEFT JOIN tbl_report T2
ON T1.spuno = T2.spuno and T1.udate = T2.udate
No.1
- 回答日時:
よくみかける質問ですね。
この掲示板でもなんどか話題にあがっています。キーワードがつけにくくヒットしにくいので攻めはしませんが・・。
とりあえずMySQLのバージョンによりやり方がまったくことなります。
補足が必要です。
申し訳ありません。
あせってて忘れていました。
CentOS5
- Apache/2.2.3
- MySQL 5.0.22
- PHP 5.1.6
- Smarty-2.6.14
でしたが、以下の式で自己解決いたしました。
select max(id) as id,spuno,max(udate) as udate from tbl_report group by spuno;
お騒がせいたしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 野球 スポーツの話 1 2023/02/01 00:19
- サッカー・フットサル 北海道コンサドーレ札幌の話 1 2022/04/20 15:30
- その他(スポーツ) スポーツの話 1 2022/06/04 16:50
- ライブ・コンサート・クラブ 北海道コンサドーレ札幌の話 2 2022/07/30 23:23
- サッカー・フットサル 北海道コンサドーレ札幌の話 1 2022/05/30 20:25
- 野球 北海道日本ハムファイターズの話 1 2022/07/09 20:15
- 野球 北海道日本ハムファイターズの話 1 2022/06/09 14:34
- 野球 北海道日本ハムファイターズの話 1 2023/01/01 16:43
- 野球 北海道日本ハムファイターズの話 1 2022/06/02 15:35
- その他(スポーツ) スポーツの話 1 2022/10/26 00:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
副問合せの書き方について
-
エクセルの関数について教えて...
-
SQL Left Join で重複を排除す...
-
LEFT JOIN と GROUP BY
-
SQLサーバから、項目の属性(型...
-
SQLにて特定の文字を除いた検索...
-
VIEWの元のテーブルのindexって...
-
バインド変数について
-
select文のwhere句に配列を入れ...
-
URL と行番号の指定
-
inner joinをすると数がおかし...
-
LEFT JOINが2つあるSQL文でAND...
-
ストアドのエラーについて
-
複数テーブルのGROUP BY の使い...
-
php+mysqlで複数選択削除について
-
主キーレコードを削除する場合
-
「SELECTして取得できない場合...
-
min句のSQLを改造し二番目に小...
-
UPDATE my_items SET item_name...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
SQLサーバから、項目の属性(型...
-
副問合せの書き方について
-
VIEWの元のテーブルのindexって...
-
エクセルの関数について教えて...
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
select文のwhere句に配列を入れ...
-
sqlで、600行あるテーブルを100...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
Unionした最後にGROUP BYを追加...
-
期間の重複を調べるSQL文につい...
-
クエリ表示と、ADOで抽出したレ...
-
Access パラメータクエリをcsv...
-
PL/SQLの変数について
-
MySQLのDATE型カラム値がNULLの...
-
php+mysqlで複数選択削除について
-
上位3位を求めるSQL文は?
おすすめ情報