
テーブル=T)
KEY DATA
001 あ
002 い
003 う
004 え
005 お
SQL)
SELECT DATA FROM T WHERE KEY = 003 ;
上記のSQLでは、「う」のデータしか取得できませんが、
「003」の前後1件、合計3件の「い」「う」「え」を取得する方法を教えて下さい。
ちなみに、
SELECT DATA FROM T WHERE KEY >= 003 AND ROWNUM <= 2
と
SELECT * FROM ( SELECT DATA FROM T WHERE KEY < 003 ORDER BY KEY DESC ) WHERE ROWNUM < 1
のUNIONでは上手く行きませんでした。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
SQLを少し直せば、質問に記載の考え方でもいいと思います。
select data from
(select data from t
where key < '003'
order by key desc)
where rownum = 1
union all
select data from
(select data from t
where key >= '003'
order by key)
where rownum <= 2;
もしくはnot existsを使って、
select data
from t a
where
key = '003'
or not exists (
select *
from t b
where (a.key < '003' and b.key < '003' and a.key < b.key)
or (a.key > '003' and b.key > '003' and a.key > b.key)
);
とかでもいいかもしれません。
ご回答、ありがとうございました。いただいた回答を適用したら上手く行きました。また、EXISTS関数も勉強になりました。ありがとうございました。
No.1
- 回答日時:
SELECT DATA FROM T WHERE KEY >= 003-1 AND KEY <= 003+1;
ではだめですか?
ご回答、ありがとうございました。確かに例にあげたテーブルのKEY値が、001、002…のため、ご回答のSQLでできますね。ただし、実際に適用するテーブルのKEY値は歯抜けのため、003-1の002や、003+1の004が必ず存在する訳でありませんので、003に最も近い003未満1件、003超過1件のデータを取得する方法を知りたかったので、説明不足ですみません。でも、勉強になりました。ご回答、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループの仕方
-
あるカラムのMAX値+1をINSERTし...
-
レコードが選択されないときの...
-
複数行を1行にするSQL
-
Oracle8iでSQL文の引数について
-
複数条件に当てはまる行の抽出...
-
Oracle 9iで英字を含まないレコ...
-
SELECT文でINを使わずに検索したい
-
PL/SQLの基礎的な質問ですが・・
-
外部結合に条件をつけたい
-
教えて下さい。m(__)m
-
SQL:外部結合について
-
テーブル結合について、下記SQL...
-
SQLPLUSにて演算子を使う方法と...
-
sumやcount関数について
-
OracleSqlで『RORNUM...
-
DB2の行指定検索SQLについて
-
sqlのwhereで指定した条件の前...
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるカラムのMAX値+1をINSERTし...
-
レコードが選択されないときの...
-
Oracle8iでSQL文の引数について
-
複数行を1行にするSQL
-
SQLPLUSにて演算子を使う方法と...
-
Oracle 9iで英字を含まないレコ...
-
ループの仕方
-
PL/SQLの基礎的な質問ですが・・
-
sqlのwhereで指定した条件の前...
-
SQL:外部結合について
-
sumやcount関数について
-
テーブル結合について、下記SQL...
-
教えて下さい。m(__)m
-
SELECT文でINを使わずに検索したい
-
DB2の行指定検索SQLについて
-
外部結合に条件をつけたい
-
複数条件に当てはまる行の抽出...
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
OracleのSQL*PLUSで、デー...
おすすめ情報