SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【MySQL】4.1系で不具合?(NULL許可のUNIQUE制約のあるカラムにて)

今回は、不思議な現象の報告のみ。

MySQL 4.1.22付近の複数のバージョンで発生。
MySQL 5系では発生しませんでした。

現象)
下記の定義とデータのテーブルで、NULL許可のUNIQUE制約のあるカラムを SELECT DISTINCT すると期待した結果が返ってこない。

・テーブル定義

CREATE TABLE t (
  `id` int(11) default NULL,
  UNIQUE KEY (`id`)
);

・データ

select * from t;
+--------+
| id     |
+--------+
| [NULL] |
| [NULL] |
|      1 |
|      2 |
|      3 |
+--------+

・問題のSQLと結果

select distinct id from t;
+--------+
| id     |
+--------+
| [NULL] |
| [NULL] |
|      1 |
|      2 |
|      3 |
+--------+

・GROUP BY しても変

select id from t group by id;
+--------+
| id     |
+--------+
| [NULL] |
| [NULL] |
|      1 |
|      2 |
|      3 |
+--------+

・ちなみにこうすると結果が変わる

select id, count(*) from t group by id;
+--------+----------+
| id     | count(*) |
+--------+----------+
| [NULL] |        2 |
|      1 |        1 |
|      2 |        1 |
|      3 |        1 |
+--------+----------+

・こうしてもよい

select distinct id + 0 from t;
+--------+
| id + 0 |
+--------+
| [NULL] |
|      1 |
|      2 |
|      3 |
+--------+

原因をご存知の方、不具合報告など情報をご存知の方、教えてください。

関連するメモ

コメント