idと、dataという2つのカラムで構成されたMySQLがあります。
そのidはプライマリキーに設定してあり、auto incrementとして、どんどん数値が増えていく設定です(phpMyAdminを使ってテーブルを作っています)
そこで、そのid番号の現在の最新のものを
php側から呼び出して取得し、
その次、しばらくすると、PHP側で再びその最新から2番目
(2番目に新しいデータ)を取得する命令を
投げたいと思っています。
そのあとは、同じように、3番目に新しいもの、
4番目、5番目と続けたいと思っています。
その際、毎回、php側で
MySQLのデータの読み出し命令を送るわけですが、
その際、最新のもの、2番目に最新のものを
時間差でSELECTしていくには、
どのようにすればいいでしょうか。
PHP側で「いま3番目に新しいものを読んだので次は4番目に新しいもの」というように前回の状態を保持しておくことってできるのでしょうか。
また、このidというのは、途中で消したりしているidもあったりするので、1番から始まっていたとしても、途中の30番とかが抜けていたりして、歯抜け状態ですので、id番号でセレクトするとエラーになる可能性が高いです。
なので、id番号ではなく、
テーブルの上の行から選んでいくという方法が
ベストだと思っています。
そのような指定をMySQLの構文で指定することって可能なのでしょうか?
ちなみに、一応、何番のidを読むというのは理解しており、
以下のような感じのSELECT文をphpのqueryで使っていたりします。
table_aから、変数$indexNumの値のidを読むという処理を、
変数$queryに入れている文が以下になります。
$query = "SELECT arrayset FROM `table_a` WHERE id= '$indexNum'";
このあたりのノウハウをご存知の方、教えてくださいますと幸いです。
お願いいたします。
No.1
- 回答日時:
何をやりたいのか、理解に苦しみます。
ある時点でn番目であっても、他ユーザなどから追加や削除があれば、何番目かは変動してしまいます。
その時点での列値の最大値、あるいは前回拾った値の次に大きい値は、例えば次のようなSQLで拾えます。
select max(id) from table_a
や
select 選択リスト from table_a where id>前回拾ったid値 order by id limit 1
ただ、これが希望するアドバイスなのかどうかは、現状の質問内容からは判断できません。
この回答への補足
ありがとうございます。
select max(id) from table_a
だと、table_a内の中で最大のidを取得
ということになってしまうと思うのですが、
やりたい処理としては、
table_a内の最大のidのある行の、arraysetに含まれる値を取り出したいのです。
そこで、指定のidナンバーの行のarraysetの中に含まれる値を取り出すという意味で、
$query = "SELECT arrayset FROM `table_a` WHERE id= '$indexNum'";
としていました。
No.2ベストアンサー
- 回答日時:
いまいち意図がわからないけど・・・
SELECT arrayset FROM `table_a` ORDER BY id DESC LIMIT 1
でよいのでは?
この回答への補足
再度ご回答ありがとうございます。
このSQL文で、無事、idの最大時の、
arraysetの値を取得することが出来ました!
・・・ですが、idが2番目に大きい、3番目に大きいものと、
例えば、10秒ごとにidの降順にarraysetの値を取得していくとなると、
どうすればいいでしょうか。
2番目以降のデータの取得の仕方がわからなくて悩んでいます。
この処理はウェブサイト上で行うものなのですが、
ある命令があるたびに、一回目は、
idで最大時のarraysetの値を取り出し、
また同一の命令があった場合は、idで2番目に大きいときのarraysetの値を取り出し、
その次に同じ命令があった場合は、
idで3番目に最大のものを取り出すという流れの処理です。
(ちょっとわかりにくい処理で本当にすみません。。。)
サイトをリロード(更新)した場合は、再度idの最大値のときのarraysetを読み込んでいきます。
No.3
- 回答日時:
何をやりたいのか、いまいち分かりませんが。
。。>table_a内の最大のidのある行の、arraysetに含まれる値を取り出したい
この文言が適切なら、MySQL 4.1以降ならサブクエリが使えます。
例えば、こんな感じ。
select arrayset from table_a where id=(select max(id) from table_a)
この回答への補足
ありがとうございます。
サブクエリでうまくidで最大のものを取り出すことが出来ました。
常にサイトにアクセスするたびに、
ある命令があるたびに、一回目は、
idで最大のものを取り出し、
また同一の命令があった場合は、idで2番目に最大のものを取り出し、
その次の命令では、idで3番目に最大のものを取り出すという流れの処理です。
(ちょっとわかりにくい処理で本当にすみません。。。)
この場合、MAX(id)により、一番大きいidは取得できたのですが、
2番目以降はどうすればいいでしょうか。
ORDER BY idとしておいて、
そしてその上から2番目、次は3番目みたいに読み込むレコードを降ろしていくだけなのですが。。
ここだけアドバイスお願いできますでしょうか。
ちなみに、最初に記述していますように、
idはいつも連番になっているわけではないので、降順にならべたものを
上から拾っていきたいというだけになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- Access(アクセス) ACSESS初心者です マンション管理をACCESSで出来ないかとチャレンジしています。 リレーショ 3 2022/10/08 11:45
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQLサーバから、項目の属性(型...
-
SQL Left Join で重複を排除す...
-
副問合せの書き方について
-
[MySQL] UNIQUE制約の値を更新...
-
select文のwhere句に配列を入れ...
-
SQLにて特定の文字を除いた検索...
-
selectした大量データをinsert...
-
エクセルの関数について教えて...
-
sqlで、600行あるテーブルを100...
-
MySQLのint型で001と表示する方...
-
VIEWの元のテーブルのindexって...
-
複数テーブルのGROUP BY の使い...
-
Unionした最後にGROUP BYを追加...
-
Access パラメータクエリをcsv...
-
LAST_INSERT_IDで同時にアクセ...
-
PL/SQLの変数について
-
[SQLServer] テーブル名からカ...
-
VMwareがCDドライブを認識する...
-
1対多結合で多を絞り込み条件と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
副問合せの書き方について
-
SQLサーバから、項目の属性(型...
-
VIEWの元のテーブルのindexって...
-
select文のwhere句に配列を入れ...
-
selectした大量データをinsert...
-
センノシド異性体構造式
-
Unionした最後にGROUP BYを追加...
-
insertを高速化させたい
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
sqlで、600行あるテーブルを100...
-
エクセルの関数について教えて...
-
Access パラメータクエリをcsv...
-
URL と行番号の指定
-
複数テーブルのGROUP BY の使い...
-
PL/SQLの変数について
おすすめ情報