- ベストアンサー
MySQLで、本日に一番近い日のレコード
Linuxサーバーで、MySQLを使っています。 ユーザーの付属テーブルの中で、 同じユーザーのレコードが複数あります。 その多数のレコード中に、日付項目があります。 そこから、ユーザー毎に、本日に一番近い過去未来の日のレコードだけを抽出するには、 どのようなSQL文を書けばよいでしょうか? 抽出結果は、下記のようになるように。 ユーザーA、本日に一番近い日付、・・・・ ユーザーB、本日に一番近い日付、・・・・ ユーザーC、本日に一番近い日付、・・・・ ※同一ユーザーは、複数抽出されない。=ユーザーは、ユニークになる抽出結果。
- longucumber0519
- お礼率64% (34/53)
- MySQL
- 回答数1
- ありがとう数2
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
select user_id, max(date) from your_table group by user_id;
関連するQ&A
- SQLで、指定日に一番近いレコードだけ抽出
Linuxサーバーで、MySQLを使っています。 商品テーブルの中で、 同じ商品のレコードが複数あります。 (例です。本来ならそんなつくりのテーブルは作らないです。) その多数のレコード中に、日付項目があります。 そこから、 1)商品毎に、2)指定日に、3)一番近い過去未来の日の、4)レコードだけを抽出するには、 どのようなSQL文を書けばよいでしょうか? 1.過去に複数ある日付の中から、指定日に、一番近いレコード。 2.未来に複数ある日付の中から、指定日に、一番近いレコード。 3.同一商品レコードは、複数抽出されない。
- ベストアンサー
- MySQL
- SQLで、指定日条件のSQL文
MySQLを使っています。 商品テーブルの中で、 同じ商品のレコードが複数あります。 その多数のレコード中に、日付項目があります。 そこから、 1)商品IDで重複せずに、2)指定日に、3)一番近い過去の日、4)指定日を含めて、複数ある未来の全レコード、を抽出するには、 どのようなSQL文を書けばよいでしょうか? 商品でユニークになるように、 1.過去に複数ある日付の中から、指定日に、一番近いレコード。 2.未来に複数ある日付の中の、全ての未来の、レコード。 3.同一商品レコードは、複数抽出されない。
- ベストアンサー
- SQL Server
- SQLで、過去で一番大きい日付のレコード抽出
MySQLを使っています。 同じ商品のレコードが複数あります。 その多数のレコード中に、日付項目があります。そこから、 1)指定日に、2)一番近い過去の日の1件の、3)全商品のレコード、を抽出するには、 どのようなSQL文を書けばよいでしょうか? 1.過去に複数ある日付の中から、指定日に、一番近いレコード。 レコードの例) 指定日=2015-07-01 商品ID 日付 1 2015-10-11 ・・・未来 ⇒ 抽出せず 1 2015-08-02 ・・・未来 ⇒ 抽出せず 1 2015-07-01 ・・・指定日 ⇒ 抽出せず 1 2015-07-01 ・・・指定日 ⇒ 抽出せず 1 2014-01-01 ・・・過去 ⇒ 抽出せず 1 2015-06-03 ・・・過去 ⇒ 抽出したい★★ 2 2015-10-11 ・・・未来 ⇒ 抽出せず 2 2015-08-02 ・・・未来 ⇒ 抽出せず 2 2015-07-01 ・・・指定日 ⇒ 抽出せず 2 2014-01-01 ・・・過去 ⇒ 抽出せず 2 2015-06-03 ・・・過去 ⇒ 抽出したい ★★
- ベストアンサー
- MySQL
- SQLで、指定日に日付条件で抽出方法
商品テーブルの中で、 同じ商品のレコードが複数あります。 その多数のレコード中に、日付項目があります。 そこから、 1)指定日に、2)一番近い過去の日の1件、3)指定日を含めて、複数ある指定日及び未来の全レコード、を抽出するには、 どのようなSQL文を書けばよいでしょうか? 1.過去に複数ある日付の中から、指定日に、一番近いレコード。 2.指定日と未来に複数ある日付の中の、全ての未来の、レコード。 レコードの例) 指定日=2015-07-01 商品ID 日付 1 2015-10-11 ・・・未来 ⇒ 抽出したい 1 2015-08-02 ・・・未来 ⇒ 抽出したい 1 2015-07-01 ・・・指定日 ⇒ 抽出したい 1 2015-07-01 ・・・指定日 ⇒ 抽出したい 1 2014-01-01 ・・・過去 ⇒ 抽出しない★ 1 2015-06-03 ・・・過去 ⇒ 抽出したい 2 2015-10-11 ・・・未来 ⇒ 抽出したい 2 2015-08-02 ・・・未来 ⇒ 抽出したい 2 2015-07-01 ・・・指定日 ⇒ 抽出したい 2 2015-07-01 ・・・指定日 ⇒ 抽出したい 2 2014-01-01 ・・・過去 ⇒ 抽出しない★ 2 2015-06-03 ・・・過去 ⇒ 抽出したい
- ベストアンサー
- MySQL
- MySQL 最大値のレコードの特定
SQLが上手く作れないためお知恵をお貸し頂ければ幸いです。 articleテーブルに存在するユーザの一覧に、記事の投稿件数、記事に含まれるsizeの最大値、最大値が投稿された記事の登録日時、記事のタイトルを加えたものを抽出したいです。 [ article ] article_id user_id size insert_unixtime title ---------------------------------------------------------- 1 100 18 20130101 aaaaaaaaaaaa 2 100 10 20130102 bbbbbbbbbbbb 3 100 18 20130103 cccccccccccc 4 200 11 20130201 dddddddddddd ↓↓希望する抽出結果↓↓ article_id user_id count max_size insert_unixtime title ---------------------------------------------------------- 3 100 3 18 20130103 cccccccccccc 4 200 1 11 20130201 dddddddddddd 自己結合等で、ユーザ毎の最大sizeを抽出してそれに該当するレコードを探すことであるていどはできたのですが 最大sizeが複数あった場合に、両方のレコードを取得してしまいます。(上記の例では、article_id 1と3を抽出してしまう。 ※最大sizeが複数会った場合はinsert_unixtimeが大きい方のタイトルを表示したい。 うまく1SQLで抽出できないでしょうか。
- 締切済み
- MySQL
- Mysqlレコード集計について
Mysqlレコード集計について 以下のようなテーブルがあります。 勝った試合は[win]に1が入っています。 |seq| date |win| | 1|2010/04/01| 1| | 2|2010/04/02| 0| | 3|2010/04/03| 1| | 4|2010/04/04| 1| | 5|2010/04/05| 1| [date] ASC 3連勝以上した回数をsqlで集計したいです。 sqlをいろいろ調べてみましたが、わかりませんでした。 わかる方いらっしゃれば教えてください。 よろしくお願いいたします。
- ベストアンサー
- MySQL
- MySQLで、日付最大のレコード抽出
MySQLをJAVAで使っています。 指定キーの中で、一番日付の大きなレコード項目全てを 取り出したいのですが、 下記SQLだと、何も抽出されません。 (今朝、ここで教えて頂いたSQL文です) 何が間違っているのでしょうか? さらに、もっと簡単なSQL文はないでしょうか? SELECT * FROM food WHERE (food_id = 1) AND (food_name = 'みかん') AND (karute_id = (SELECT MAX(date) FROM food WHERE (food_id = 1) AND (food_name = 'みかん'))) 与える検索キー項目は、food_id=1, food_name=みかん foodテーブル例 food_id food_name date --------------------------------- 1 みかん 2015-01-01 1 みかん 2015-02-01 1 みかん null 1 みかん 2015-04-01 2 きんめだい 2015-01-01 2 じんたん 2015-02-01 2 コロッケ 2015-02-01
- ベストアンサー
- MySQL
- SQLite vs MySQL
お世話になります。 データベースにアクセスするperl CGIを造ろうとしています。 1データベース・1テーブルのみの単純なつくりで 1レコードはだいたい、intergerが10項目、char[12]程度のtextが10項目、dateが5項目、 全部で10,000レコード程度の小規模なものです。 ユーザ数は特定の約30人程度です。各人、一日に2~3レコードにしか書き込み操作はしないはずです(時刻は重なるかもしれません)。 速度がクリティカルに要求されるわけではありません。 SQLiteとMySQLの比較は、ネット上でも多数見つかり、多数ユーザならMySQL、single userならSQLiteという感想が多いですが、30人というのが「多数」なのか、どうなのかわかりかねましたので、使用実感をお聞かせください。 SQLiteで少し組んでみたのですが、きわめて容易に作れるし、バックアップも簡単なので、30人程度ならSQLiteでも問題なしということであればSQLiteにしたいところです。
- ベストアンサー
- MySQL
- MySQLで、日付最大のレコード抽出
MySQLをJAVAで使っています。 指定キーの中で、一番日付の大きなレコード項目全てを 取り出したいのですが、 下記SQLだと、何も抽出されません。 何が間違っているのでしょうか? さらに、もっと簡単なSQL文はないでしょうか? SELECT * FROM food WHERE (food_id = 1) AND (food_name = 'みかん') AND (food_id = (SELECT MAX(date) FROM food WHERE (food_id = 1) AND (food_name = 'みかん'))) 与える検索キー項目は、food_id=1, food_name=みかん foodテーブル例 food_id food_name date --------------------------------- 1 みかん 2015-01-01 1 みかん 2015-02-01 1 みかん null 1 みかん 2015-04-01 2 きんめだい 2015-01-01 2 じんたん 2015-02-01 2 コロッケ 2015-02-01
- ベストアンサー
- MySQL
- 2つのテーブルからレコードを抽出する方法
お世話になります。MySQLに関する質問です。 TABLE1とTABLE2の2つのテーブルからレコードを抽出する際、 TABLE1からは全項目のデータを取得し、TABLE2からは一部の項目の データを取得したいと考えています。 条件は、TABLE1とTABLE2を[No]という項目の値で紐(ひも)づけます。 (1) SELECT * FROM TABLE1 (2) SELECT COL_A, COL_B, COL_C FROM TABLE2 上記(1)(2)のレコードを1つのSQLで取得する方法について、どなたかご教授願えますか?
- ベストアンサー
- MySQL
お礼
ご回答ありがとうございます。とても助かります。 でも、最大日付だけ抽出するようなSQL文に見えます... まだ、SQL詳しくないので、とりあえず、やってみます。 その1行で、 1.過去に複数ある日付の中から、指定日に、一番近いレコード。 2.未来に複数ある日付の中から、指定日に、一番近いレコード。 が、抽出できるなら、すごく楽なので。