• I had to cheat to get this and actually run the code. I got suspicious when I couldn't see the answer I was expecting "Invalid column name 'c1'."
    Personally I think that's a bug, because the inner select returns no rows and should therefore be equivalent to 

    select c1
    from dbo.t1
    where c1 in ()

    which returns a syntax error (but I can also understand an empty set as there's nothing inside the IN statement).