Как написать верный запрос для одной таблицы?
ну допустим так:
select *
from `table_name`
where (from_id = 32 and to_id = 20)
   or (from_id = 20 and to_id = 32)
limit 1;

Только учтите, что если в таблице будут две записи: 32,20 и 20,32, то определить какая из них верная, на основе входных данных, не представляется возможным.
Еще один способ:
select * from tbl 
	where from_id + to_id = 20 + 32 and abs(from_id - to_id) = abs(20 - 32);
В этом запросе можно поменять порядок чисел и получить тот же результат.

Проверить SQL запрос