• ベストアンサー

MySQLで一番最後のレコードをしる関数って?

MySQLで一番最後のレコードを知る関数ってありますか? noや時間情報のソートの最初の値ではなく、簡単に最後に追加したレコードを取得する方法。 ないなら、方法としてはレコード数をカウントして、全カウント数番目をselectすればいいんでしょうか? SQLには、最後とかの概念がないかな?

  • MySQL
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • tak2003
  • ベストアンサー率32% (174/540)
回答No.3

残念ながら、主キーで昇順のソートが掛かるため最後に入力したものを抽出することは無理です。 更新日時追加もしくは主キーをIDのオートナンバーにしておく方法しかないですね。 住所    ;氏名 青森県   :青田 一郎 岩手県   :石川 次郎 岡山県   :岡部 三郎 東京都   :東条 秀雄 上記のDBに 香川県   :川田 四郎 を入力しても、岡山と東京の間に挿入されます。(主キーが住所の場合)

to-zoku
質問者

お礼

ある程度は予想通りです。 IDか時間系列にするか、掲示板+カウンターの様な場合は、別のテーブルを作る場合も見受けられます。 面倒だけど、最後の入力を定位置にupdateするか。 参考になりました。

その他の回答 (2)

noname#223623
noname#223623
回答No.2

#1です。 「関数で」という質問だったんですね。 残念ながら関数は知りません。失礼しました。忘れてください。

noname#223623
noname#223623
回答No.1

追加日時のフィールドを持てばいいだけじゃないでしょうか。

to-zoku
質問者

お礼

あ、No2の訂正を見る前に、補足を書いてしまいました。 私の予想では、時間やNoでソートするのが通常だと思うんですがそれ以外の方法があるのか?と思ったので。

to-zoku
質問者

補足

「ない」と言い切って欲しいか、「知らないなら、知らない」と前に書いて欲しい。 確かに、時間やNoのフィールドを追加するのは簡単ですが、こういった情報からも知識が広がっていくので。 負荷が高そうとか、処理が面倒とかは、もちろん詳しい人に書いてもらえたら嬉しいですが、こちらでも判断しますので。

関連するQ&A

  • 上から何番目か。

    $sql = "select * from table_namae where no = 115 order by jikan desc"; の場合、上から何番目か知る方法がわからん。 時間でソートして、そのnoが上から何番目かを知りたい。 もちろん、レコードの値も欲しい。 NO 115を検索して  タイトル 名前 パスワード  → 時間でソートして上から?番目 noはPRIMARYで重複する値はなく常に一つだけ。 SQLで値を得る事は、無理? noは特にその都度変わるので、limitは使えないと思うんですが。 PHPなら、ソートして最初から希望のナンバーまでのレコードを取得。 $i = 0;  while($col = mysql_fetch_array($rst)){$i++; if(希望のナンバー){ print "$i番目"; print "タイトル、名前さん。"} } これでも、取得できるけど、無駄なループになるし。

    • ベストアンサー
    • MySQL
  • 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
  • 一行目のレコードを2度表示させたい。

    レコードを読み込むのとは別に、最終書き込み者(ソートした最初のレコード)を表示させたいのですが、mysql_fetch_array($rst)を読み込ませると1位行目が消え、次ぎにmysql_fetch_array($rst)が読み込む時には2行目からになります。 ------------------------- 最終書き込み者 一太郎さん「一番目のタイトル」 -レコードの一覧- □一太郎 一番目タイトル □次郎  2番目のタイトル □佐武郎 三番目のタイトル ------------------------- としたいのですが。 SQLを2度実行すればできるのですが、無駄な処理な気もします。 別のテーブルやこの情報だけtextに保存するのも無駄な気もするし。 //一番目をゲット $sql = "select * from siritori order by db_no desc limit 1;"; $rst = mysql_query($sql,$con); //$rst2 = $rst; $col = mysql_fetch_array($rst); print "最終書き込み者".$col["name"]."さん".$col["title"]."<hr>"; //一覧を表示 $sql = "select * from siritori order by db_no desc limit 10;"; $rst = mysql_query($sql,$con); //SQL配列読み込み(select文) while($col = mysql_fetch_array($rst)){ print $col["name"]."さん".$col["title"]."<br>".$col["kome"]."<hr>";} //$rst2 = $rst; 配列をコピーできないかなー?とかもやったのですができない。 なんとか巧い解決方法はないでしょうか? 連想配置や、MySQLには詳しくないのでお教えください。

    • ベストアンサー
    • MySQL
  • 複数のテーブルのレコードをカウントする方法

    2つのテーブルのレコード数をカウントする方法を教えてください。 $sql = "SELECT * FROM テーブル1 and テーブル2"; $res = mysql_query($sql,$myLink); $num_k = mysql_num_rows($res); こんな感じでカウントできるかと思ったのですが出来ませんでした。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • MySQLで先頭にinsertしたい

    現在、MySQLでselectを行うと、追加した順序で表示が行われています。 そこで、新たにレコードを先頭にinsertしたいと思うのですが、可能でしょうか? 本来はorder byなどでソートすべきで、邪道であることは承知ですが、 もし可能な方法があれば教えていただきたいです。 よろしくお願いします。

  • XAMPPのMySQLで削除済みレコードが表示される

    XAMPPのMySQLで削除済みレコードが表示される XAMPP1.7.3をWinXP Proにて運用しています。 PHPにてselectのSQLを実行したところ、削除済みのレコードが表示されるため困っています。 これまでの経緯は 1.phpMyAdminにてDBとテーブルを作成し、サンプルデータを4件登録 2.PHPからselectで条件なしで全レコードが表示されるのを確認 3.条件をつけてselectし、それぞれの条件にマッチしたレコードが表示されるのを確認 4.phpMyAdminにて1レコードを削除 5.条件をつけてselectし、削除したレコードが表示されるのを発見 6.phpMyAdminのSQLで同じ条件のSQLを実行し、削除レコードが表示されないのを確認 7.PHP側のselect後にDBCloseをしているかの確認 8.phpMyAdminにてテーブルの修復、最適化などを実行 9.MySQLの再起動 以上の操作をしてみましたが、やはりPHPからのSQLの結果に削除されたレコードが表示されてしまいます。 色々なサイトで同じような現象のTipsがないか探しましたが、見つけきれず質問させていただきます。 同じような現象に対しての対応を紹介したサイトや、対処方法をご教授下さい。 よろしくお願いします。

  • テーブルに格納されている最後の行数が知りたい

    使用環境:mysql 5.1 内容:テーブルに格納されている最後の行数が知りたいです。 テーブル名:seito no name 1 tanaka 2 suzuki : : 100 kato のように1つのレコードに番号を振って名前をつけているのですが、 「seito」テーブルに登録されている最後の番号を取得するSQL文 を教えていただけないでしょうか? ちなみに、最後が必ず「kato」というわけではないので「seito」テーブルの noカラムにおける最後の番号を取得したいと考えてます。 上記の場合「100」番が取得できれば希望の結果となります。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • 条件によってレコードを取得したい

    Mysqlで以下のような条件のSQL文がわかりません。 hogeというフィールドの値に1があればそのレコードを取得 hogeに1という値のフィールド値をもったレコードがないならhogeが空のレコードを取得したいのですが方法がわかりません。 SELECT * FROM `tebleA` where (`hoge` = '1') or `postageFee_memId` = '' LIMIT 5 上のSQL文ではどうしても「`postageFee_memId` = '' 」のほうが優先されます。 (優先されるのはオートインクリメントIDが小さいから当然ですが・・) 「`hoge` = '1'」が絶対優先されるようにしたいのです。 いわゆる 「`hoge` = '1'」がない場合だけ「`postageFee_memId` = ''」が実行できればと思います。 ifとかを使って条件文をかけばいいのでしょうか? 足らずの情報があればおっしゃってください。 何卒ご教授お願いいたします。

  • PHP+MYSQLでレコードをランダム取得しページング

    PHP+MYSQLでMYSQLから特定キーの「昇順」や「降順」などでは無くランダムな順番で全てのレコードを取得し、複数ページに出力させたいと考えています。 1枚のページであれば、MYSQLで取得したデータを配列に入れて、array_randといった方法があるかと思いますが、"複数ページに渡って重複させず"にデータをランダム出力させるにはどのような方法があるでしょうか? 自分では並び順カラム(sort_num)を作成し、cronなどで定期的にランダムな数値を全レコードのsort_numに挿入し、ORDER BY sort_num LIMIT $pagestartrecord,$pageendrecord といった力技でページングする方法しか思いつきませんでした。 お力をお貸し願えたらうれしいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • mysql_fetch_assocについて

    お世話になります。 MySQLからデータを取得してWEBで表示するために mysql_fetch_assoc関数を使っています。 SQL文を作って、mysql_query関数で実行させ、 結果をmysql_fetch_assocの引数にしているのですが 作成するSQL文に”DESC”を追加すると何も表示されなくなります。 (mysql_num_rowsでデータ数は取得できているのでSQL自体は有効の ようです) SQL文から”DESC"を取ると、mysql_fetch_assocの結果も正常に表示 されるのですが、どうしても降順に並べ替えて表示したいので 解決方法をご存知の方ご教授ください。よろしくお願いします。

    • 締切済み
    • PHP