プロが教えるわが家の防犯対策術!

SQLのORDER BYについてご教授いただけますでしょうか。

例えば、10件のデータのうち、5件を指定のORDERBYで抽出し、
残り5件をORDERBYで抽出するということは可能でしょうか。

ID名前 システムフラグ
1 AAA 1
2 BBB 1
3 CCC 1
4 DDD 1
5 EEE 1
6 FFF 2
7 GGG 2
8 HHH 1
9 III 1
10 JJJ 1

上記のようなデータがあった場合、
以下のように抽出されるようにしたいと思っています。

ID名前 システムフラグ
1 AAA 1
2 BBB 1
3 CCC 1
6 FFF 2
7 GGG 2
4 DDD 1
5 EEE 1
8 HHH 1
9 III 1
10 JJJ 1

システムフラグが2が入っているものは、
5件からの4,5件目に表示されるようにして、
それ以降はIDの昇順で表示されるようにしたいと思っております。

5件というのは、決め打ち5件ではなく、条件によっては変わるのですが、
5件が7件となった場合は、6,7件目がシステムフラグ2のものがくるようにしたいです。
指定した件数から下2つ目がシステムフラグのものが取得したいということです。

わかりにくいと思いますが、どのようなSQLを書けば抽出できるか
ご教授いただけますでしょうか。
どうぞ宜しくお願い致します。

A 回答 (2件)

こんにちわ。



詳細な条件が不明なのでなんとも言えないですが
「UNION」結合ではどうでしょうか?

例で言えば
IDの1~3の3件、ID昇順
UNION ALL
フラグ=2の2件、ID昇順
UNION ALL
ID3以降、且つフラグ<>2、ID昇順
というようにやれば抽出できそうですが…
    • good
    • 0

上位件数が動的に変わる場合はストアドにて


記述した方がよいと思います。

簡単な方法としては、一度データを全てテーブルに移して、
プログラム記述で条件を入れて並び替えをしてはいかがでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!