重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

PHPで以下のような構文でデータベースから読み出しています。
$sql = "SELECT * FROM table_name1 WHERE key = '111' ";
$result = mysql_query($sql,$con);
while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {

}
このtable_name1はMyISAMでインデックスが2つで主キーidとkeyを設定しています
またこの主キーが昇順になっています。
(直接コマンドで同じクエリーをすると昇順で帰って来ます)

つまり以下の様な結果が帰って来ます。
+-----+------+------+
| id | key | data |
+-----+------+------+
| 1 | 111 | aaa |
| 5 | 111 | bbb |
| 7 | 111 | ccc |
+-----+------+------+

しかし table_name1をMEMORYに変換した場合(ALTER TABLE `table_name1` ENGINE = MEMORY)
同じSQL分で
+-----+------+------+
| id | key | data |
+-----+------+------+
| 7 | 111 | ccc |
| 5 | 111 | bbb |
| 1 | 111 | aaa |
+-----+------+------+
という結果になってしまいます、直接コマンドで同クエリーをうつと昇順のまま
なのにPHPでの結果のみ逆になります、原因が良くわからないのですが
設定か仕様があるのでしょうか?
よろしくお願いします。

A 回答 (1件)

MySQLに限らずSQL全般についてorder byにて任意にソートルールを指定しない限り


表示順は保障されません。
    • good
    • 0
この回答へのお礼

ありがとうございした。

お礼日時:2012/09/27 17:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!