名簿のテーブルが下記の構成です。
id 数値の型で主キー
名前 テキストの型
データが次の様になっている。
1 山田
2 太郎
3 花子
ここで、idを順にプラス1してそれぞれを
2 山田
3 太郎
4 花子
と言う様に名簿のテーブルのデータを更新したい。
これを単に
update 名簿 set id=id+1;
では、id=2と3に付いては主キーとなっている為にデータは更新されな
い。なので、一旦idを降順にしたテーブルを作ってから更新クエリを実
行すれば問題は無いと思う。
この様な動作をサブクエリを使って、一つのクエリにしたいのですが。
Access2007のクエリではこの様な事は出来るのでしょうか。
宜しく回答願います。
No.2
- 回答日時:
アクセスが作成するidというオートナンバーのフィールドの値は変更できませんので、
メインキーである限り変更はできません。
有難う御座います。
idは数値の型でオートナンバーでは有りません。
メインキーでも、この場合は、idを降順にした
テーブルで更新クエリを作れば、更新は出来ます。
この場合は二段構えになります。
質問の趣旨は、この二段構えの2つの一連の操作を
一つにまとめてサブクエリを使っての
一発更新クエリをする為のsqlを教えて下さい。
と言う物です。
質問の趣旨を理解してから回答願います。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Oracle SQL update方法 2 2022/06/22 14:07
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- MySQL 【MySQL】本当に困っているので、助けてください。よろしくお願いします。 3 2023/06/03 14:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQLサーバから、項目の属性(型...
-
[SQLServer] テーブル名からカ...
-
キー毎の、ある列のmaxのレコー...
-
SQL Left Join で重複を排除す...
-
select文のwhere句に配列を入れ...
-
SQLにて特定の文字を除いた検索...
-
Unionした最後にGROUP BYを追加...
-
Excel2000でレーダーチャートの...
-
副問合せの書き方について
-
複数のExcelアドインひとつのタ...
-
「Duplicate entry '1' for key...
-
バインド変数について
-
ある条件の最大値+1を初番する...
-
Accessで差分取得する方法は? ...
-
テーブル名を省略して「h.id」...
-
同じサーバーで、異なるデータ...
-
MySQLのint型で001と表示する方...
-
Access パラメータクエリをcsv...
-
検索時に並び替えを無効にする...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
副問合せの書き方について
-
SQLサーバから、項目の属性(型...
-
VIEWの元のテーブルのindexって...
-
select文のwhere句に配列を入れ...
-
selectした大量データをinsert...
-
センノシド異性体構造式
-
Unionした最後にGROUP BYを追加...
-
insertを高速化させたい
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
sqlで、600行あるテーブルを100...
-
エクセルの関数について教えて...
-
Access パラメータクエリをcsv...
-
URL と行番号の指定
-
複数テーブルのGROUP BY の使い...
-
PL/SQLの変数について
おすすめ情報
有難う御座います。
回答はああすればとか、こうすればとかはでは無くて。
直にsqlを書いて下さい。
この場合の回答は、sqlだけです。この様な事と言うのは、
例えば、mysqlの場合は、
update 名簿 set id=id+1 order by id desc;
で解決します。この様な事がAccess2007の場合は
どうなのかと言う事ですよ。
今迄の回答は、全て回答になっていません。
宜しく、回答願います。
update tbl set id=id+1 order by id desc;
上は間違っていて、
update 名簿 set id=id+1 order by id desc;
です。無いテーブルの更新クエリは最初から
動きませんので。
失礼しました。
サブクエリを使った更新クエリで動かそうとするから
大変なので有って。これを普通に二段階で動かすので
有れば、そんなには難しくは有りません。
然し、他のデータベースではこれは一発の更新クエリ
で動きます。だから、他のが出来るのならば。尚更
Access2007の場合でも動かそうと思いました。
この二段階のやり方に付いては、色々と方法は有ります。
それは、私の悩む所では有りません。その部分は解決
しています。
この問題の一番簡単な解決と言うのは、
降順の選択クエリーを作って、その選択クエリ
に対して更新クエリをする方法です。
この二段構えが一番簡単な方法です。
もう暫くは、このままとしますが。
回答が無いと判断をした場合は即刻閉めさせて
頂きます。
降順の更新クエリは
SELECT * FROM 名簿 ORDER BY id DESC;
idを+1する更新クエリは
UPDATE 降順名簿 SET id = [id]+1;
ここで、別名のaliasのasを使って、降順名簿の所に
何とかして、SELECT * FROM 名簿 ORDER BY id DESC
を持って来ての記述が出来れば。目的は達成すると思うが。
その様な記述が出来るのかを知りたいと言う事です。
私は、sqlでもasを使った記述のsqlを知らない。
asを使えば出来そうな気はしますが。
宜しく回答願います。
UPDATE (SELECT * FROM 名簿 ORDER BY id DESC) AS tbl SET tbl.id = [id]+1;
上記で問題が解決しました。
自己解決しましたので、閉じます。
ShowMeHowさん、この様な回答を何故早急に出さなかったのでしょうか。
これが、私の求める回答ですよ。
今後、この様に他の人の質問に回答をする場合は頓珍漢な回答はしないで下さい。
質問をした人が大迷惑をしますので。
今回の私の場合は、偶々自己解決をしましたので問題は有りませんが。
必らずしも、この様なケースとは限りませんので。自戒を宜しくお願いします。
これにて、閉じます。