私はMySQL 5.5を実行しており、これまでには分かっていない動作が見つかりました。考えるMySQLはテーブルを1つのユニークなカラムで自動的にソートします。これはどこに文書化されていますか?
この作成:
insert into test (name) values ('b');
insert into test (name) values ('a');
そして、この選択:これらのインサート付き
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UQ` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
を
:select * from test;
MySQLは、私は知らなかった何かをします
2 a
1 b
自動的にソートされます。 1つの余分、非ユニーク列を持つ表を考えると
:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL,
`other_column` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name_UQ` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
と同じインサート(上記参照)、選択(上記参照)、この結果を与える:
1 b NULL
2 a NULL
どの予想どおりです。
最初のクエリ(SQL Fiddle)の動作は文書化されていますか?私はこれらの独特のものの多くを見たいと思います。
私はこれに頼っているわけではありません。 1つのユニークな列を持つテーブルとユニークな列と別のランダムな列を持つテーブルの動作の違いがはっきり分かります。私の質問は、この動作がどこに定義されているかどうかです。 – Sherlock
@Sherlock。 。 。それは*定義されています。 'order by 'を指定しない限り、結果セットは不確定な順序になります。 –