Это вполне нормально.Полученные результаты соответствуют ожидаемым, за исключением того, что первые два результата не являются точно одинаковыми.Если вы обратите внимание на первые два столбца, вы увидите, что они поменялись местами при сравнении первых двух результатов.
Но условие a.id != b.id
менее ограничительно, чем два других, и, следовательно, даст больше результатов.
Например:
Если у вас есть значения 1, 2 и 3 и требуется a.id < b.id
, вы получите в качестве возможных комбинаций:
(1, 2), (1, 3) и (2, 3).
Если вам требуется a.id > b.id
, вы получаете следующие комбинации:
(2, 1), (3, 1) и (3, 2).
Обратите внимание, что эти пары похожи, как указано выше, но не одинаковы: порядок значений в каждой паре противоположен - соответствует условию.
И, наконец, если вы (только)требуют (менее ограничительный) a.id != b.id
, тогда вы получите все из вышеперечисленного, то есть все возможные пары, кроме (1, 1), (2, 2), (3, 3):
(1, 2), (1, 3), (2, 3), (2, 1), (3, 1) и (3, 2)
В вашем запросе они затем упорядочиваются, но это не меняет сути: вы получаете вдвое больше результатов с a.id != b.id
, чем с одним из других условий.