Ваш текущий набор результатов в том виде, в котором он сформирован, содержит каждую пару дважды, и все, что вам нужно сделать, чтобы удалить одну из 2 строк, - это применить условие WHERE
:
SELECT h1.name name1,
h1.grade grade1,
h2.name name2,
h2.grade grade2
FROM likes AS likes1
INNER JOIN likes AS likes2 ON likes1.id1 = likes2.id2 AND likes1.id2 = likes2.id1
INNER JOIN highschooler AS h1 ON likes1.id1 = h1.id
INNER JOIN highschooler AS h2 ON likes2.id1 = h2.id
WHERE h1.name < h2.name
или это может быть:
WHERE likes1.id1 < likes1.id2
, если есть случай, когда 2 старшеклассника имеют одно и то же имя. Смотрите демо . Результаты:
| name1 | grade1 | name2 | grade2 |
| --------- | ------ | ------- | ------ |
| Cassandra | 9 | Gabriel | 9 |
| Jessica | 11 | Kyle | 12 |