[PHP-users 34548] Re: MySQLのデータ追加の順番

Takayoshi Kitagawa t-kitagawa @ visor.co.jp
2009年 4月 22日 (水) 18:42:11 JST


どちらかといえばDBMS全般の話題ですが・・・

DBのテーブルは「集合」なので、明確な順番は持っていません。
SELECTする時にORDER句を用いて明示的にソート条件を指定しなければ、
レコード並び順は常に不定です。

たとえばレコード登録日時順に取り出したいのであれば、
まず created_at というような列を定義します。
INSERT の時に現在日時をセットし、
SELECT の時に order by created_at と指定します。

もっと単純に登録順であれば、多くの場合、
テーブルには id のような名前で auto_increment を指定した
主キーがあると思いますので、
SELECT の時に order by id でもよいかと思います。

*******************************
北川 貴義
Mail : t-kitagawa @ visor.co.jp
*******************************

----- Original Message ----- 
From: "朧月" <oboro @ ebetsu.arrow.jp>
To: "PHP-users ML" <php-users @ php.gr.jp>
Sent: Wednesday, April 22, 2009 5:55 PM
Subject: [PHP-users 34540]MySQLのデータ追加の順番


> お世話になってます、朧月です。
>
> 今Debian4 + Apache2 + PHP5 + MySQL5の組み合わせでデータベース構築のプロ
> グラミングを行っています。その過程でMySQLのテーブルにデータを追加する
> コードを書いたのですが、データの入る行がたまに逆転します。
>
> MySQLにデータの追加をした場合、私のイメージではデータは
>
> 1
> 2
> 3
>
> と追加した順番に入るはずなのですが、たまに
>
> 3
> 2
> 1
>
> と前のデータよりも前に入ることがあります。ただ、イメージ通りに入ることも
> あるので、話は非常にややこしい感じです。
>
> ネットや本で調べたのですが、MySQLにデータを追加するにはinsert文しかな
> く、これにデータの順番を指定する引数(?)のような物も見つかりませんでした。
>
> こちらとしては常にイメージ通りに入って欲しいのですが、どうしたらいいで
> しょうか。
>
>
> -- 
> 朧月
> mailto:oboro @ ebetsu.arrow.jp
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3 



PHP-users メーリングリストの案内