- ベストアンサー
SQL文で教えてください
初めてです。お願いします。 次のようなテーブルがあります。 ID kosuu ------------ 1 3 2 5 3 1 kosuuの一番大きい値とそれに紐づくIDを取得したいのですが SELECT ID, Max(kosuu) FROM tblX と書くと、IDが不正だとおこられてしまいます。 ID kosuu ------------ 2 5 を抽出するにはどうしたらよいでしょうか? Access2000です。宜しくお願いします。
- chachako
- お礼率95% (159/167)
- その他(データベース)
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 先ほどのサブクエリーでは、結果が一件の時のみ有効ですので グループ化して複数のレコードを条件としたい場合は、IN句を使います。 "="を"in"に変えて、グループ化をしてみてください。 こんな感じです。 select ID,kosuu from tblX where kosuu in (select max(kosuu) from tblX group by name)
その他の回答 (1)
- maro200
- ベストアンサー率45% (15/33)
select ID,kosuu from tblX where kosuu = (select max(kosuu) from tblX) こんな感じで出来ると思います。
補足
maroさん、ありがとうございます!!できました! で、実はテーブルにはもうひとつカラムがありまして、 ID kosuu Name ------------ 1 3 aa 2 5 aa 3 1 bb となっています。 実際は、このNameでグループ化した中でのkosuuの最大値をとりたかったのです。 最大値の取り方だけわかれば後は自分で出来るかなあ? と思い、色々やってみたのですが、できませんでした(-_-) もしよろしければ、そちらのやり方も教えていただけないでしょうか? あつかましくてすみません。 宜しくお願いします。 欲しいデータは ID kosuu Name ------------ 2 5 aa 3 1 bb です。
関連するQ&A
- SQL文の書き方
次のような列の2つテーブルがあります ID,メッセージ,書いた日 ID,名前 一つ目のテーブルに メッセージを追加していき IDの違う最新のメッセージだけ取り出したいのですが 考えても分からなくて… SELECT ID,MAX(書いた日) FROM 一つ目のテーブル GROUP BY ID の時のIDそれぞれのメッセージが取り出せればいいのですが 最終的には IDの部分は別テーブルにある IDと一致する名前に置き換えて取り出したいと思っています よろしくお願いします データベースはPostgreSQLを使っています
- ベストアンサー
- その他(データベース)
- SQL文作成のお願い
前提として下記のようなテーブルがあります。 テーブル名:test フィールド: 1)id: varchar, not null 2)name: varchar 3)date: timestamp with time zone, not null このテーブルに下記のようなレコードがあります。 '00001', 'A', '2005-01-01 00:00:00' '00001', 'B', '2005-07-01 00:00:00' '00001', 'C', '2005-11-01 00:00:00' '00002', 'X', '2005-01-20 00:00:00' '00002', 'Y', '2005-07-20 00:00:00' '00002', 'Z', '2005-11-20 00:00:00' ■今やりたいこと このテーブルからidごとにdateフィールド値が最近のレコードを取得したい。 ■やってみたこと 下記SQLを発行しました。 >select id, max(date) from test group by id order by id 結果==> 00001 2005-11-01 00:00:00 00002 2005-11-20 00:00:00 実際はnameフィールドの値も取得したいのですが、group by句を使うとフィールド指定ができませんでした。 ■だめだったSQL select id, name, max(date) from test group by id order by id どのようにSQLを書けばよろしいでしょうか?
- ベストアンサー
- PostgreSQL
- SQLのmaxで求めた値を変数に代入する
ex) select max(id) from table でかえってくる値を変数に代入するにはどのようにコーディングすればよいのでしょうか? ExcelVBAを使っています。
- 締切済み
- Visual Basic
- SQLのSELECT文で*を使わない理由
SQLでSELECT文を使う場合、大抵 SELECT ID, user FROM u_table のように、取得する項目を指定すると思います。 これを、 SELECT * FROM u_table としないのには、トラフィックの問題以外に何か理由があるのでしょうか?
- ベストアンサー
- SQL Server
- SQL WHERE文のノットイコールについて
初歩的な質問ですみません。 Oracle9iでsqlplusで接続しています。 「member_accountテーブルのdelete_flag(VARCHAR2)カラムの値が'1'ではない」ものを抽出したいと考えてます。 ただ、正しい結果が返ってきません。 何が問題でしょうか?よろしくお願いいたします。 ============================================================ SQL> select count(ID) from member_account; COUNT(ID) ---------- 16450 SQL> SQL> select count(ID) from member_account where delete_flag='1'; COUNT(ID) ---------- 107 SQL> SQL> select count(ID) from member_account where delete_flag<>'1'; COUNT(ID) ---------- 0 SQL> SQL> select count(ID) from member_account where delete_flag!='1'; COUNT(ID) ---------- 0 ============================================================ よろしくお願いいたします。
- ベストアンサー
- Oracle
- SQL文について困っています
ID(NUMBER型)と NUM(NUMBER型)と nenngetu (date型)を持ったテーブルAAAから、 ID=1000 のなかで日時が一番古い処理NOをselectするSQL文を書きましたが上手く実行されません。 select NUM from AAA where nenngetu = (select min(nenngetu) from AAA) and ID=1000; ID=1000の条件をはぶき、 select NUM from AAA where nenngetu = (select min(nenngetu) from AAA); でしたら、実行できました。 oracleで実行しようとしています。 どなたか、書き方を教えてください。
- ベストアンサー
- その他(プログラミング・開発)
- SQLで取得したフィールドをSQL文として利用
お世話になっております。 MYSQLで sql_id (int PK) sql_data (text) のようなテーブル(sql_db)を持ち select sql_id from where (sql_data をsqlとして実行した結果 ) > 200 のように、フィールドから取得した値をSQLとして実行したりする方法はございますでしょうか。 ご教授よろしくお願いいたします。
- 締切済み
- MySQL
- SQL文について
次のSQL文のうちで、適切なものはどれか。 学生表(学生番号,学生氏名,所属学科,取得単位数) 答えはこれ↓なんですが、なぜなのかがわかりません。 SELECT 所属学科,MAX(取得単位数) FROM 学生表 GROUP BY 所属学科
- ベストアンサー
- SQL Server
- SQL文でのデータの取得が上手くいきません
初めて質問させていただきます。 こちらのカテゴリで良いのか分からなかったのですが、よろしくお願いいたします。 SQL文を作成しているのですが、上手くいかず困っている状況です。 要件としてはテーブルAにユーザーの情報が格納されているのですが、 キーの一つとして世代(SEDAI_NO)(日付)を持っております。 今回取り出したいデータは該当ユーザーの処理日以前の最新のデータを 取得したいと思い以下のSQL文を作成しましたが、上手く行かず、最新世代を含むそれ以前の世代のデータを取得してきています。 どこがおかしいのでしょうか? よろしくお願いいたします。 【作成したSQL】 select * from テーブルA テーブルA’ where (USER_ID=該当のユーザーID) and (SEDAI_NO = (select max(SEDAI_NO) from テーブルA where SEDAI_NO = テーブルA’.SEDAI_NO AND 処理日 >= テーブルA'.SEDAI_NO)
- 締切済み
- その他(データベース)
お礼
できました!! ご親切にどうもありがとうございました! 大変勉強になりました。 これからもどうぞ宜しくお願いします。