如何使用AS别名执行复杂查询

First of all, I am new here and just learning sql, so bear with me.

I have a simple question. Let's say I have a table called voting with the following columns:

id, token(int), candidate(int), rank(int)

.. and I want to perform a query like:

SELECT * 
  FROM  voting 
  WHERE rank > t1.rank 
  AND   token = t1.token

.. where t1 is

SELECT  rank,token 
  FROM  voting 
  WHERE candidate = $mycandidate

How can I do this in a single statement using AS alias, or whatever is the simplest method?

Please note that final table created may have rows with different candidates than i have specified i.e the rank,token variables are initially chosen according to candidate but once chosen they may contain any candidate value with them.

Something like this should do, I believe:

 select
    v1.*
 from
    voting v1 inner join
    voting v2
        on v1.token = v2.token and
           v2.candidate = $mycandidate and
           v1.rank > v2.rank

EDIT changed SELECT * to SELECT v1.*