• Because they are different queries. Consider the first subquery of those queries. Suppose t2 has one row (col2=10, col3=300) and t1 rows are

    (col1=5, col4=100),

    (col1=5, col4=300).

    In the first query first subquery for the (col1=5, col4=100) row of t1 will return max(t2.col2)==null.

    In the second query first subquery for the (col1=5, col4=100) row of t1 will return max(t2.col2)== 10.

    And as a result, first query will not return (col1=5,col4=100) and the second will do.