версия
Я использую версию сервера: 5.1.36-community-log MySQL Community Server (GPL)
Я наконец-то придумал простой пример, чтобы легко воспроизвести его!
установка:
create table t1(id integer unsigned,link integer unsigned);
create table t2(id integer unsigned auto_increment,primary key(id));
create table t3(id integer unsigned,content varchar(30));
insert into t1 value(1,null);
insert into t2 value(1);
insert into t3 value(1,'test');
затем запустите:
select t2.*,t3.*
from t1
left join t2 on t1.link=t2.id
left join t3 on t3.id=t2.id
where t1.id=1;
получит это неправильно:
+------+------+---------+
| id | id | content |
+------+------+---------+
| NULL | 1 | test |
+------+------+---------+
Но если мы создадим t2 таким образом, этого не произойдет:
create table t2(id integer unsigned);
Итак, это как-то связано с первичным ключом!
НОВЫЙ НАЙДЕН
запустить это не вызовет ошибку:
select t2.*,t3.*
from t1
left join t2 on t1.link=t2.id
left join t3 on t2.id=t3.id
where t1.id=1;
Так что это также как-то связано с направлением соединения!