Description:
select 1 from (select 1 from data_a_tmp) data_a_tmp(a1) where exists (select min(data_a_tmp.a1));
+---+
| 1 |
+---+
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
| 1 |
+---+
10 rows in set (0.01 sec)
select * from (select exists (select min(data_a_tmp.a1)) from (select 1 from data_a_tmp) data_a_tmp(a1)) data_a_tmp(a1);
+------+
| a1 |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
The second query gets the wrong result.
How to repeat:
create table data_a_tmp(a1 float, a2 float, a3 float, a4 float);
insert into data_a_tmp(a1, a2, a3, a4) values (6.97,2.13,4.5,4.0);
insert into data_a_tmp(a1, a2, a3, a4) values (9.52,4.87,5.33,7.21);
insert into data_a_tmp(a1, a2, a3, a4) values (4.69,3.82,5.66,7.22);
insert into data_a_tmp(a1, a2, a3, a4) values (3.8,7.55,5.18,7.82);
insert into data_a_tmp(a1, a2, a3, a4) values (9.95,5.0,5.26,6.09);
insert into data_a_tmp(a1, a2, a3, a4) values (3.98,6.8,5.93,6.8);
insert into data_a_tmp(a1, a2, a3, a4) values (3.3,5.89,5.44,6.22);
insert into data_a_tmp(a1, a2, a3, a4) values (2.07,7.09,3.01,6.82);
insert into data_a_tmp(a1, a2, a3, a4) values (4.98,4.9,3.04,5.11);
insert into data_a_tmp(a1, a2, a3, a4) values (8.98,8.46,5.93,4.28);
select * from (select exists (select min(data_a_tmp.a1)) from (select 1 from data_a_tmp) data_a_tmp(a1)) data_a_tmp(a1);
+------+
| a1 |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
This query returns wrong result, it should return 10.