• ベストアンサー

SELECT時の件数制限

いつもお世話になっております。 SQLSereverにおいて SELECT時の件数制限を行う事は可能でしょうか? MySQLのLIMIT句と同様の動きになることが理想です。 例) SELECT * FROM TABLE LIMIT 5 ,10; 5レコード目から10レコード分のデータを取得する。 以上、よろしくお願い致します。

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

  • ベストアンサー
回答No.1

SQLServerにはその機能は無いようです。但し、条件付で似たような処理を行わせることは可能です。 条件 1.取得したいSELECT結果はソートしたものである 2.必ず取得レコード数ある(5~10の場合、10レコード以上ある) 取得方法 1.内部のSELECT文で10レコード昇順で取得 2.1の結果を5レコード降順で取得 SELECT TOP 5 * FROM ( SELECT TOP 10 * FROM TABLE ORDER BY TABLE.KEY ) A ORDER BY A.KEY DESC

kawakami2005
質問者

お礼

素早いご回答ありがとうございます。 大変参考になりました。

関連するQ&A

  • 2つのテーブルからレコードを抽出する方法

    お世話になります。MySQLに関する質問です。 TABLE1とTABLE2の2つのテーブルからレコードを抽出する際、 TABLE1からは全項目のデータを取得し、TABLE2からは一部の項目の データを取得したいと考えています。 条件は、TABLE1とTABLE2を[No]という項目の値で紐(ひも)づけます。 (1) SELECT * FROM TABLE1 (2) SELECT COL_A, COL_B, COL_C FROM TABLE2 上記(1)(2)のレコードを1つのSQLで取得する方法について、どなたかご教授願えますか?

    • ベストアンサー
    • MySQL
  • select文について

    1つのデータの前後のデータを取得する場合、何か簡単に取得するselect文はありますでしょうか? 例) no name adress 1  山田  東京 3  山本  名古屋 6  田中  大阪 7  高橋  福岡 上記のようなテーブルがあった場合で、noが6の前後のデータを取得する場合、以下のように考えてみましたが他に簡単にデータを取得する方法はないでしょうか? なお、noが6の前後の数字(3や7)は変更される場合がある為、select文の際にno=3やno=7と固定する事は出来ません。 ・noが6の前のデータ(noが3)のデータを取得する場合 select adress table where no<6 oder by no limit 1 ・noが6の次のデータ(noが7)のデータを取得する場合 select adress table where no>6 oder by no limit 1 分かりにくい説明で申し訳ありませんが、どなたかよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • データのページ切り替え表示方法を教えてください

    データを複数のページに分けて表示させたいと思っていますが、 「次のページ」「前のページ」がうまく作れないでおります。 SQL文によるクリエ結果の先頭と最後のレコードID(ユニークでIDを振っています)を取得すれば、 次のページなら SELECT * FROM table_name id > [先頭レコードID] LIMIT 10; 前のページなら SELECT * FROM table_name id < [最後レコードID] LIMIT 10; とやればいいのかなと思っていますが、クリエ結果の最初と最後のレコードIDを取得する方法がわかりません。 どうか上記の件、ご教授くださいm(_ _)mペコリ

  • 任意の行のselect

    PHP+MySQLでクエリーを実行する際に 「5行目」と「13行目」と「21行目」 のような、任意の行を取得したいと思っています。 LIMIT句で指定をしようとしても 「LIMIT 5,1」(5行目) は分かるのですが、同時に 「LIMIT 13,1」(13行目) と 「LIMIT 21,1」(21行目) を取得する方法は有るのでしょうか?(複数のLIMIT句?)分かる方がいらっしゃいましたら、お教えください。

    • ベストアンサー
    • PHP
  • 連動させたいセレクトボックスについて。

    こんにちは。DB+PHPが初心者のものです。 前にもここで質問させていただきましたが、 自分なりにコードを書いてみたので コードの訂正、ご教授をよろしくお願いいたします。 セレクトボックス1には、[table 1]の、種類が入り れレクトボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるようにする。 下記のようにソースを書いてみましたが、 table1の値は、セレクトボックスでちゃんと表示されますが、table2はセレクトボックスは表示されるものの、何も値がありません(T_T) 動きとしては、table1のセレクトボックスで選択したら、その項目をDBへ問い合わせ、その項目に対応した、DBに登録されているtable2の値を二つ目のセレクトボックスに表示させたいです。 <html> <body> <select name="mkoumoku"> <option selected>-------------</option> <?php //DB接続 $dbcon=mysql_connect("localhost","abcd","defg"); //DB選択 mysql_select_db("zozozo"); //table1を取得 $res=mysql_query("select distinct * from table1"); while ($rows=mysql_fetch_array($res)) { echo "<option value=\"".$rows['id']."\">".$rows['kind']."\n"; } echo "</select>"; ?> <select name="skoumoku"> <option selected>-------------</option> <? //table1に連動して項目を変えたいところのコード $res1=mysql_query("select * from table2 where key =$_POST[mkoumoku] order by id"); while ($rows=mysql_fetch_array($res1)) { echo "<option value=\"".$rows['id']."\">".$rows['name']."\n"; } //Dbクローズ mysql_close($dbcon); ?> </body> </html>

    • ベストアンサー
    • PHP
  • SELECTすると変更できない?

    横が120以上のものの中から、縦が50であるものを1レコード消す という処理をします。 mysql_query('START TRANSACTION'); $sqlsel = 'SELECT id, tate, yoko FROM dbtb WHERE yoko > 120'; $res = mysql_query($sqlsel); while ($line = mysql_fetch_row($res)) {  if ($line[1]) == 50) {   $sqldel = 'DELETE FROM dbtb WHERE id = "' . $line[0] . '" LIMIT 1';   mysql_query($sqldel);  } } mysql_query('COMMIT'); やりたいことに対してストレートなソースではないですが、SERECTしてforでループさせているときに、途中でDELETEしてもレコードの削除はできるんですか?

  • php5+mysqlのSELECT文でwhere句を指定すると正しく動

    php5+mysqlのSELECT文でwhere句を指定すると正しく動きません。 レコード数を取得します。 ここで、field10(category)=text型の値に基づきレコード数を取得したいのですが、 $sql="select * from A where B='C'"; とするとレコード出力(index.php)で0を出力。 where句を指定せずに $sql="select * from A"; とするとレコード出力(index.php)で97を出力。 文字コード関係のQ&Aサイトを見ましたが、phpファイルの冒頭部分に $con = mysql_connect($DBSERVER, $DBUSER, $DBPASS); mysql_query("SET NAMES 'sjis'"); $selectdb = mysql_select_db($DBNAME, $con); を指定しています。 テーブルAに含まれるデータは、csv(,区切り)で、load data infile・・・しました。 ※Records:97 Deleted:0 Skipped:0 Warnings:0 他に考えられる原因・対処方法はありますでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • コマンドプロンプト 複数の実行結果を変数に

    複数のテーブルのデータ件数を取得して変数に入れ、result.txtに結果を出力したいのですが、下のように書くと、1つのテーブルのデータ件数しか出力されません。複数の結果を出力するにはどうしたらよいか教えてください。 for /f %%z in ('mysql -u root -p ^< "c:\bat\test.sql"') do set count=%%z echo result: %count% >> "c:\bat\result.txt" test.sqlの中身を、 select count(*) from table1; select count(*) from table2; select count(*) from table3; とすると何も出力されず、 select count(*) from table1; とすると、1つの結果だけ出力されます。

    • ベストアンサー
    • MySQL
  • 初歩的質問 文字列を検索しヒットした件数を得たい

    MySQL初心者でどのようなコードを書けばいいかわかりません。 やりたいことはこうです。 特定のフィールド内においてある文字列を検索し、ヒットした件数を得る。 SELECT COUNT(fff) FROM test_table LIKE 'moziretu'; こう書いてもできません。 どう書けば実現できるんでしょうか?

    • ベストアンサー
    • MySQL
  • 【バグ?】ORDER BY DESCでempty

    MySQLを使っていて、下記条件で結果がemptyになります。 どうすれば正常に取得できるようになるでしょうか。 SELECT `hoge`, `fuga`, `piyo` FROM `table` WHERE `moge` = 'moge' ORDER BY `fuga` DESC LIMIT 0, 5 ・`moge`と`piyo`にはインデックスが貼られています。 ・DESCを消すと正常に取得できます。 ・WHERE句を消すと正常に取得できます。 ・LIMITの数値を大きくすると正常に取得できます。('moge'によってどれくらい大きくすればいいかの数値は違う) ・LIMITのoffsetを1以上にすると正常に取得できます。 1ヶ月ほどはちゃんと動作していたのですが、`fuga`をUPDATEしたタイミングからこのような現象となりました。 環境 ・Ubuntu 12.04.1 LTS ・MySQL 5.5.28 ・エンジン mroonga ・groongaのバージョン2.0.9 足りない情報があれば補足致します。 宜しくお願い致します。

    • ベストアンサー
    • MySQL