Every derived table (AKA sub-query) must indeed have an alias. I.e. each query in brackets must be given an alias (
AS whatever), which can the be used to refer to it in the rest of the outer query.
SELECT ID FROM ( SELECT ID, msisdn FROM ( SELECT * FROM TT2 ) AS T ) AS T
In your case, of course, the entire query could be replaced with:
SELECT ID FROM TT2