Non so se e' corretto assimilare la tabella ad una matrice.... nel senso che se cerchi un valore specifico punterai al contenuto di una colonna a prescindere dalla riga, altrimenti punti ad una coordinata estraendo il valore che trova e non un valore prescelto.

nel primo caso:

select * from tabella
where a = 'a1'

nel secondo:

select a from tabella
where id = 1

mentre una cosa del genere potrebbe portarti nulla se in "id 1" il contenuto di "a" fosse diverso da "a1":

select * from tabella
where id = 1 AND a = 'a1'