我在mysql上遇到问题,我根据ON
中LEFT JOIN
子句中的条件得到'不可能的WHERE条件'。我在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在不同版本中的反应方式存在差异,因此这很难追查。