
MDBよりMySQLへの移行で最近SQL文を始めたばかりです。
1テーブルで、あるキー毎に最小値を求め更新するSQL文をお教え下さい。
テーブル名「input」
キー「TEL_NO」単位に「IN_SQNO」の最小値を求め更新。
(テーブル:input)
┌────┬───-─┬───┐
│TEL_NO │IN_SQNO │ PAGE │
├────┼───-─┤───┤
│0001 │ 1 │ │
│0001 │ 2 │ │
│0001 │ 3 │ │
│0002 │ 4 │ │
│0002 │ 5 │ │
│0003 │ 6 │ │
│0005 │ 8 │ │
│0005 │ 9 │ │
└────┴───-─┴───┘
(更新結果)
┌────┬───-─┬───┐
│TEL_NO │IN_SQNO │ PAGE │
├────┼───-─┤───┤
│0001 │ 1 │ 1 │
│0001 │ 2 │ 1 │
│0001 │ 3 │ 1 │
│0002 │ 4 │ 4 │
│0002 │ 5 │ 4 │
│0003 │ 6 │ 4 │
│0005 │ 8 │ 8 │
│0005 │ 9 │ 8 │
└────┴───-─┴───┘
(自分で考えてSQL)
UPDATE [input_tel]
SET [input_tel].[PAGE] =
(SELECT MIN([aa].[IN_SQNO]) FROM [input_tel] AS [aa] WHERE [input_tel].[TEL_NO] = [aa].[TEL_NO] GROUP BY [aa].[TEL_NO]);
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
MySQLの質問をする場合は、バージョンを書きましょう。
最新は5.1だと思いますが、サブクエリの実装が4.1と比較的最近だったりします。
>UPDATE [input_tel]
> SET [input_tel].[PAGE] =
ACCESSやSQL Serverでは、表名や列名を[]や"で囲むことで、予約語と同じキーワードを使用できると承知していますが、MySQLでは「`」(バックォートを使います。
また、一つの表に対して、検索した結果で更新する操作は、最新バージョンでも実装されていないようです。
(1)作業用の表の定義&データ格納
create table temp_input
as select * from `input`;
(2)更新
update `input` as i
set `page`=(select min(in_sqno) from temp_input as t
where i.tel_no=t.tel_no);
(3)後始末
drop temporary table temp_input;
ご回答ありがとう御座います。
>MySQLの質問をする場合は、バージョンを書きましょう。
すみません。
勉強になりました。 バージョン:5.0です。
>ACCESSやSQL Serverでは、表名や列名を[]や"で囲むことで、予約語と同じキーワードを使用できると承知していますが、MySQLでは「`」(バックォートを使います。
そうなんですね。
最近MySQLを勉強始めたばかりで、AccessからODBC経由の
リンクでは問題なかったのですが、
これから 直接MySQLへの更新等を行おうと勉強中ですので
非常にたすかりました。
お教え頂いた方法で、早速テストしてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle SQL update方法 2 2022/06/22 14:07
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- 英語 However, in 57.1% of the cases there were apical s 2 2022/05/16 20:42
- 英語 No other student in this class is as pretty as Sat 1 2022/11/15 21:57
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- 戦争・テロ・デモ ウクライナ人から 3 2023/03/05 07:25
- Ruby pythonエラー 4 2022/11/11 19:12
- 英語 【 論・表 英訳 】 問題 次の文を英訳せよ。 クラスの誰もその質問に答えられませんでした。 解答 4 2022/07/25 21:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一つ前に戻るには…
-
テーブル名で検索して削除
-
最大値を持つレコードを削除したい
-
MYSQLのフィールドにユニークキ...
-
データのバックアップ
-
TEXTでのPRIMARY KEYの使い方
-
MySQL5.1 で外部キーの動作を検...
-
mysqlの容量について
-
他のDBにあるテーブル内容をcre...
-
mysqlでJOIN文
-
PHP上のSQLで、SELECT文をいく...
-
mysqlのフィールド名
-
SQLでSUMなどの関数でデータが...
-
外部キーだけのテーブル(主キ...
-
SELECT 文の NULL列は?
-
テーブルに存在しない列をselec...
-
update文で改行を入れる
-
SQL、2つのテーブルで条件一致...
-
DBの負荷の減増
-
SQL 複数テーブルのupdate
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一つ前に戻るには…
-
最大値を持つレコードを削除したい
-
mysqlでJOIN文
-
mysqlのフィールド名
-
テーブルが作成できない
-
mysqlで外部キーをつけたカラム...
-
2つのテーブルの連動
-
PHP上のSQLで、SELECT文をいく...
-
MySQLで、テーブル内のフィール...
-
SQL一発でカレンダー表示は可能...
-
MySQLのテーブルタイプの変更に...
-
外部キー、親を調べるにはshow ...
-
SQL文による残業時間の算出につ...
-
python2.5を使用してSQLite3の...
-
ビューに追加・削除が出来ません。
-
グループからランダムに抽出す...
-
1000万件のデータをmysqlで効率...
-
連番の質問
-
mysqlのデータベースを復元した...
-
DBの文字コード切り替え
おすすめ情報