Esto se puede lograr fácilmente con el operador mínimo () y mayor (), pero como MySQL no los admite, debe usar una construcción CASE para obtener el más pequeño/mayor. Con dos columnas está bien, pero esta solución se vuelve bastante complicada una vez que se involucran más columnas
select distinct
case
when source < destination then source
else destination
end as source,
case
when source > destination then source
else destination
end as destination
from hyperlinks