3

phpMyAdmin の [Browse] ボタンをクリックしたときに、自動インクリメントの ID 番号が正しい順序で配置されないという問題に遭遇したことがありますか? それは私だけですか? db テーブルに間違って設定したものはありますか?

たとえば、一連のデータをテーブルに挿入し、一部を削除した場合、phpMyAdmin でこのテーブルを確認すると、これらのデータは次のような順序で表示されます。

id

2
24
28
296
300

しかし、私のテーブルのほとんどでは、注文には表示されず、代わりに次のように表示されます。

id

24
300    
2
296    
28

この下の写真のように、

代替テキスト

ID が正しい順序で表示されるように、何かできることはありますか?

編集1:

あなたのほとんどは、私がここで取り上げた問題を誤解していると思います。つまり、phpMyAdmin の [ブラウザ] ボタンをクリックして、テーブル内のすべてのデータを一覧表示するときです。SQL クエリを使用して出力を一覧表示するときではありませんorder by

それは理にかなっていますか?

代替テキスト

編集2:

これは私のテーブル構造の 1 つです。何が問題なのかを確認するのに役立ちますか?

CREATE TABLE IF NOT EXISTS `root_pages` (
  `pg_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `pg_url` varchar(255) DEFAULT NULL,
  `pg_title` varchar(255) DEFAULT NULL,
  `pg_subtitle` varchar(255) DEFAULT NULL,
  `pg_description` text,
  `pg_introduction` text,
  `pg_content_1` text,
  `pg_content_2` text,
  `pg_content_3` text,
  `pg_content_4` text,
  `pg_order` varchar(255) DEFAULT NULL,
  `pg_hide` varchar(255) DEFAULT '0',
  `pg_highlight` varchar(255) DEFAULT '0',
  `pg_important` varchar(255) DEFAULT '0',
  `pg_parent` varchar(255) DEFAULT '0',
  `parent_id` varchar(255) DEFAULT NULL,
  `pg_cat_id` varchar(255) DEFAULT NULL COMMENT 'page category id',
  `ps_cat_id` varchar(255) DEFAULT NULL COMMENT 'post category id',
  `tmp_id` varchar(255) DEFAULT NULL COMMENT 'template id',
  `pg_backdate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `pg_created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `pg_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`pg_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
4

3 に答える 3

7

好きなように出力を並べ替えることができます: ORDER BY id ASC.

テーブル内のレコードには固有の順序がありません。

于 2011-01-22T15:21:49.077 に答える
2

IDで並べ替える場合はorder by、選択時に句を使用する必要があります。

SQLでは、返されるセットは、select必要な順序を指定しない限り、順序付けされていません。

指定しない限り、実際の順序はランダムであると想定する必要があります。実際には、ランダムではなく任意ですが、テーブルの内容を変更すると、順序が簡単に変わる可能性があります。

于 2011-01-22T15:23:20.853 に答える
1

これがあなたに当てはまるかどうかわかりませんが、あなたの PK はタイプ INT ですか? ある種の VARCHAR または TEXT の場合、示した例のように注文できます。そして、その列が実際にあなたの PK であると確信していますか? テーブルの SHOW CREATE TABLE 出力を投稿すると、より明確になる可能性があります。

そして、どのストレージエンジンを使用していますか。私の記憶が正しければ、select のデフォルトの順序は、MYISAM では挿入順序、InnoDB では PK です。これは、MySql のバージョンにも依存します。すべての状況で、SELECT ステートメントで ORDER BY を使用する必要があります。

于 2011-01-22T16:02:51.160 に答える