diff --git a/mysql-test/r/join_outer.result b/mysql-test/r/join_outer.result
index e69e7603e21c9faca98c9be02ce6cc216b4680de..b75eadd5291809ec1fef7637453154b7cd11f639 100644
--- a/mysql-test/r/join_outer.result
+++ b/mysql-test/r/join_outer.result
@@ -975,3 +975,11 @@ EMPNUM	NAME	GRP
 0	KERI	10
 9	BARRY	NULL
 DROP TABLE t1,t2;
+CREATE TABLE t1 (c11 int);
+CREATE TABLE t2 (c21 int);
+INSERT INTO t1 VALUES (30), (40), (50);
+INSERT INTO t2 VALUES (300), (400), (500);
+SELECT * FROM t1 LEFT JOIN t2 ON (c11=c21 AND c21=30) WHERE c11=40;
+c11	c21
+40	NULL
+DROP TABLE t1, t2;
diff --git a/mysql-test/t/join_outer.test b/mysql-test/t/join_outer.test
index 670e74339269f2c9e5262dff43b131c545c507a6..7dd35f164d557855ab8539a48ed35a2da45d8839 100644
--- a/mysql-test/t/join_outer.test
+++ b/mysql-test/t/join_outer.test
@@ -698,4 +698,16 @@ SELECT * FROM v1 WHERE EMPNUM < 10;
 
 DROP TABLE t1,t2;
 
+#
+# Test for bug #11285: false Item_equal on expression in outer join
+# 
+
+CREATE TABLE t1 (c11 int);
+CREATE TABLE t2 (c21 int);
+INSERT INTO t1 VALUES (30), (40), (50);
+INSERT INTO t2 VALUES (300), (400), (500);
+
+SELECT * FROM t1 LEFT JOIN t2 ON (c11=c21 AND c21=30) WHERE c11=40;
+
+DROP TABLE t1, t2;
 
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 7d57fd78c93dbadb3b761dbdaeaeb7f7c858903b..33f36fca9b2d67175a1e86a461973c4fcdba7081 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -7064,7 +7064,7 @@ static COND* substitute_for_best_equal_field(COND *cond,
       List_iterator_fast<Item_equal> it(cond_equal->current_level);
       while ((item_equal= it++))
       {
-        eliminate_item_equal(cond, cond_equal->upper_levels, item_equal);
+        cond= eliminate_item_equal(cond, cond_equal->upper_levels, item_equal);
       }
     }
   }