Q:

querying lots of records to find a pattern for where 1 field is different but 2 other ones match (even if reversed)

I have a table with 3 columns that looks like this....
tblTowns

TownFrom           TownTo           Distance
Abington           Abington         0
Abington           Acton            4
Abington           Acushnet         30
Abington           Adams            27
Abington           Agawam           57
......          
Acton              Abington         3
Acton              Acton            0

So a table looks like this - it takes each town in the alphabatical order, and then for TO towns in takes all the remaining towns and shows Distance between the 2.  After all towns are record for ABINGTON - then onto the next town - ACTON (as it is shown after .....).  The issue is whoever created the table made a few mistakes so for example 
 Abington          Acton            4

but then when the towns are reversed....
 Acton             Abington         3

So the values are different but they are supposed to be the same.  Because I have very many records since I go through each town alphabetically and show distance between all the other towns, I'm trying to see if there a way for me to query data where it will show towns where distance is different but FROM and TO or TO and FROM are the same.......
Desired result....
    TownFrom           TownTo           Distance
    Abington           Acton            4
    Acton              Abington         3

I don't know if I'm on the right track with this but basically my query is looking lke this...
SELECT t1.* 
FROM tblTowns AS t1
JOIN tblTownsAS t2 
ON t1.TownFrom = t2.townTo and
t1.Distance<> t2.Distance

Edit: Is there some kind of way for me to order/group by the records so that if Abington and Acton and incorrect records that they are both next to each other. ( as shown in DESIRED RESULTS) In this case I have a couple thousand records and am unable to see if the Distance is correct unless I search for each record, since they are currently ordered by alphabetically in TOWN FROM.  

A:

You were almost there excepting one condition t1.townTo = t2.TownFrom.  
To get the desired ordering, i.e seeing a pair in consecutive rows, use a case expression in order by so that the result-set is ordered by the least of townfrom and townto first and then by the greatest of townfrom,townto. 
SELECT t1.* 
FROM tblTowns AS t1
JOIN tblTowns AS t2 ON t1.TownFrom = t2.townTo and t1.townTo = t2.TownFrom
WHERE t1.Distance <> t2.Distance
order by case when t1.townfrom < t1.townto then t1.townfrom else t1.townto end
        ,case when t1.townfrom > t1.townto then t1.townfrom else t1.townto end

