• ベストアンサー

任意の行のselect

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

  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

#1さんの方法か、 またはPHP側で行番号を指定するか。 PHP側かMysql側のどちらで処理をするかで変わります。 PHPでやったほうが面倒ではないと思います。

その他の回答 (1)

noname#45409
noname#45409
回答No.1

行番号で取りたいのならば、一番シンプルなのは、行番号カラムを追加して、in句で拾ってしまうことでしょうね。 それがダメならUNIONでどうでしょう?

関連するQ&A

  • 複数行のクエリを、まとめて実行するには?mysqli_multi_query()?

    PHPとMySQLの環境です。 複数行のクエリを、まとめて送って取得したいと考えています。 ですが、今試行錯誤しているのですが、うまく行かない状態で、クエリをきちんと実行できません。 処理の流れとしては、 [DBにアクセス]→[2つのクエリの実行]→[データ取得]→[DBをクローズ] でいいのではないかと思ってやっているのですが、 2つのクエリを実行するのはなにやら無理なような記述もウェブ上で拝見しました。 その場合、同じDBの同じテーブル内の異なるデータを取得したいだけなのに、 わざわざ、一度DBにコネクトして、切断、そしてまたコネクトして、切断ということを繰り返さないとダメなのでしょうか。。? そもそも同一PHPファイル内で二度も接続、切断はすべきではないですか? ちなみに、 一つ目のクエリでは、テーブル(table_a)のレコード数をカウントしてPHP側で取得するという流れの処理です。 $query = "SELECT count(*) FROM `table_a`"; もう一つのクエリは、テーブル(table_a)の最新のレコードの、idカラムのidを取得するだけのものです。 $query = "SELECT arrayset FROM `table_a` ORDER BY id DESC LIMIT 1"; この処理を一度のクエリで入れ込むことは可能でしょうか。 それぞれ単独では実行できます。 PHPでこのような関数 mysqli_multi_query() を見つけて色々調べているのですが、 いまだに使用方法がきちんとつかめない状況です。 これで複数のクエリを送ることは可能でしょうか。 アドバイス宜しくお願いします。

    • ベストアンサー
    • MySQL
  • SELECTでn行目から最後もしくはn行目以外が取得したい

    SELECT * FROM hoge LIMIT 10, 20 とすれば10行目から20行目が取得できるのはわかるのですが、2行目から最後までとか、1行目から最後から一行前までを取得するには? ただし、n行はWHEREで条件が指定できないもととします。 一行目にシステム上必要なデータが入っているが、クライアントがブラウザなどから表示した際に見られたくないからです。 お願いします。

    • ベストアンサー
    • MySQL
  • 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
  • コンボボックスの先頭行に空白行を入れるには?

    ACCESS2000です。フォームに貼り付けたコンボボックスのプロパティの値集合ソースにクエリを書いて、クエリ実行結果のデータを取得して、コンボボックスの内容としているのですが、先頭行に空白行を挿入して、2行目以降にクエリ実行結果のデータを入れたいのです。どうすればよいのでしょうか?ちなみに列数は4列です。 それから、その空白行に「(指定なし)」のような表示が可能であれば合わせて教えてください。

  • 任意の行を複数行置換すると重い

    以下のような体裁のtxtファイルが数百あり、変数aの中身のみのtxtファイルに、すべてのファイルを変換したいのですが、 フリーウェア「複数行置換」の正規表現などを使って、任意の内容を空白に置換しようとすると、フリーズしてしまいます。 ~※複数行の任意の内容~ var a = new Array("※任意の内容", "※任意の内容", "※任意の内容" ); var b = new Array("※任意の内容", "※任意の内容", "※任意の内容" ); ~※複数行の任意の内容~ なにかほかにいい方法はありませんか?

  • SELECT時の件数制限

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

  • 10行ごとに罫線を入れて書き出したいのですが

      ・   ・ $result=mysql_query($sql); $rows=mysql_num_rows($result); として得られた複数の結果を10行ごとに横の罫線"--------"を入れてブラウザに表示したいのですがどのようにコーディングすればよいですか?

    • ベストアンサー
    • PHP
  • *ワード2003の表で行の高さを任意のサイズにしたい*

    *ワード2003の表で行の高さを任意のサイズにしたい* 30行程度の作成済の表があります。 複数行の高さを、まとめて任意のサイズに変更する方法があればと思い、質問させていただきます。 30行のうち、20行くらいを5mmの高さに、残りの10行を8.5mmや11mmなど、任意のサイズに修正したいのです。 「行の高さを揃える」では、希望の高さにならないため、現在は「表のプロパティ」の「行」タブの「高さを指定する」に「5mm」「8.5mm」等、1行づつ入力しています。 似通った表が20~30種類あり、それぞれ行数や希望のサイズが違うため、もっと簡単に変更が出来たらいいのに。と思っているのです。 それに併せて、「高さを指定する」の右側の「高さ」も「最小値」と「固定値」でバラバラになっているため、「最小値」に統一したいと考えています。 ワード2000で、その表を編集する時に、固定値だと画面が印刷レイアウトで表示されないことが判明しましたので・・・ 以上、よろしくお願い致します。

  • PHPでCSVを読み込みMySQLに行追加・変更

    PHPでCSVファイルを読み込み、MySQLにデータを追加する方法を教えてください。 その際に、新規の行はIDを指定せず、auto_incrementでidを設定するようにして、IDを指定した場合は、既存の行を変更するようにしたいです。 また、prepareメソッドを用いたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • MySQL「10行を超えたら削除する」について

    初心者と言うより、全く全くわからない状態で質問することご容赦下さい。ブログ調の掲示板で、MySQLを使っておりますが、掲示板内の投稿が10投稿を超えると、古いものから順に削除されていく状態のようで、そのリミットを完全に解除したいと思い、ファイルを探していたら、 //10行超えたら削除していく $result = mysql_query("select * from bbs_data where bbs_user_id='{$urow[id]}' order by id desc limit 9,1") or die(mysql_error()); if(mysql_num_rows($result) == 1){ $row = mysql_fetch_assoc($result); $result = mysql_query("delete from bbs_data where bbs_user_id='{$urow[id]}' and id < '{$row[id]}'") or die(mysql_error()); } という部分がありました。このリミットを解除するにはここのプログラムを変えればいいのでしょうか? その場合、どのようにしたらいいか教えて下さい。

    • ベストアンサー
    • MySQL

専門家に質問してみよう