こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLでの前検索・後検索

はじめまして。
SQL初心者です。宜しくお願いします。
使用DBはMSSQL又は、Accessです(テスト中)

まず、下のようなテーブルがあります。

(テーブル名 Tabel1)
(フィールドは全てstring型)
[ Date ][ No ][Data1][Data2] ...
[20040808][0001][ 1 ][ 2 ] ...
[20040808][0002][ 2 ][ 3 ] ...
[20040809][0001][ 3 ][ 4 ] ...

検索キーは[Date]と[No]を使用しています。
そして、例えば、[20040809][0001]を検索し、そのデータの一つ前のデータを取得したい場合、次のようなSQLを使用しました。

SELECT TOP 1 * FROM Table1 WHERE DATE + NO < '200408090001' ORDER BY DATE + NO DESC

しかし、この検索は、前データが膨大に存在した場合に(テストでは数万件)、検索時間がかなり長くなるようでした。
もっと良いSQLコマンド、または対処法がありましたら御教授の程宜しくお願い致します。

投稿日時 - 2004-08-20 10:45:47

QNo.968791

困ってます

質問者が選んだベストアンサー

DateとNoで、一意にデータが抽出できる
(DateとNoを指定すれば1レコードだけになる)
として

select * from Table1 where Date + No =
(select MAX(Date + No) from Table1 where
Date + No < '200408090001')

でいかがでしょうか?

投稿日時 - 2004-08-20 13:25:35

お礼

graceさん返答有難う御座います。
なるほど!
まず、Date + No のフィールドで絞り込んでから目的のデータを取り出すんですね。
勉強になります。
間違いなく検索スピードが上がりました。有難う御座いました。

投稿日時 - 2004-08-20 14:10:13

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問