AccessのSQLで、膨大なレコード数があるテーブルから、1つのレコードを抽出したいです


今、とあるレコードがテーブルにあるか否かを確認するために、SQLを投げているのですが。
そのテーブルはデータが大きすぎるゆえか。
例えば、

-----------------
select * from テーブルA where ID = 1234567
-----------------

というSQLを投げた場合、「レコードが大きすぎます。」というエラーが出てしまい、レコードを抽出することができないのです。

where句を使ってソートしているはずなのに、なぜ…という状況です。
また、この大きすぎるテーブルAは、ダブルクリックで開こうとした場合も「レコードが大きすぎます。」と、出てきてしまいます。

このような状況の時に、どのようなSQLを投げれば、目的のデータの抽出が可能でしょうか。
ご助言いただけますと幸いです。

よろしくお願い致します。

回答の条件
  • 1人20回まで
  • 登録:
  • 終了:2021/03/05 09:29:49
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント1300pt

https://support.microsoft.com/ja-jp/office/access-%E3%81%AE%E4%B...

そのメッセージは、↑の「テーブル」の表の下から 2番目のレコードの文字数が何とかという制限に引っかかったやつだという気がします。

Access が古いバージョンだと 2000 だったかも。


そのテーブルが、別の RDB へのリンクじゃなくて、素直に Access のファイル内のテーブルだとしたら、ぼくだったら、以下のようなのを試してみると思います。


確実に短いと分かっているカラムだけを select する。

select ID from テーブルA where ID = 1234567

count を使ってみる。

select count(ID) as N from テーブルA where ID = 1234567

この場合には、record set のレコード数が必ず 1 になるので、record set から N の値を取得して、0 か 1以上か(ID だから 1よりも大きいことはないかもしれませんが)という判断をするように、プログラムの方も修正しなくちゃいけません。



途中の「別の RDB へのリンクじゃなくて」というのは、別の地雷があったような気がするから書いておきました。

id:moon-fondu

ありがとうございます、こんな仕様があるんですね!

レコード内の文字数、4000ですか…開けず、エクスポートもできないので確認ができていません(;´Д`)

a-kuma3さんがおっしゃるように、カラムを指定すればうまく取得できました!

必要なカラムを書き出すようにします。

ありがとうございます。

2021/03/05 09:29:35

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません