我在 mysql 上遇到了一个问题,我ON
根据LEFT JOIN
. 我在 mysql 版本中有这个错误,5.1.47
但在5.1.52
.
CREATE TABLE IF NOT EXISTS test.magic_table1 (
id int primary key,
val int,
key (val)
);
CREATE TABLE IF NOT EXISTS test.magic_table2 (
id int primary key,
val int,
key (val)
);
insert into test.magic_table1 values ( 1, 1 );
insert into test.magic_table2 values ( 0, 0 );
/* explain */
select *
from test.magic_table1 m1
left join test.magic_table2 m2
on m1.id = m2.val
and m1.val = 0
where m1.id = 1;
在 MySQL 5.1.52 上,这将返回:
1 | 1 | NULL | NULL
在 MySQL 5.1.47 上返回空集。
这应该像我想象的那样工作,还是这个查询的编写方式有问题?这是一件很难追踪的事情,因为 MySQL 在不同版本中的反应方式不同。