1

我在 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 在不同版本中的反应方式不同。

4

1 回答 1

2

mysql 中报告了一个错误。

http://bugs.mysql.com/bug.php?id=53334

通过它。可能对你有一些帮助。

于 2013-11-07T22:57:05.557 回答