Выбор уникальных пар в самостоятельном соединении

Я пытаюсь написать простой запрос в sqlite с самосоединением. Я хочу, чтобы все пары идентификаторов продуктов имели одинаковую стоимость, но мне нужны уникальные пары (т.е. Не перечислить одну и ту же пару дважды даже в другом порядке). Вот что у меня есть:

SELECT b1.Id, b2.Id
FROM Basic AS b1
LEFT JOIN Basic AS b2
ON b1.cost = b2.cost
WHERE b1.Id != b2.Id
AND b1.Cost = 5;

Итак, я получаю что-то вроде

23 | 101
23 | 205
24 | 103
101 | 23 <-- Duplicate!

Я пробовал разные комбинации DISTINCT и GROUP BY, но я все еще получаю парные пары:

Я пробовал такие вещи, как

SELECT DISTINCT bp1.Id, bp2.Id...

& ... = 5 GROUP BY bp1.Id, bp2.Id;

Как я могу избавиться от повторяющихся пар? Любые идеи?

Буду признателен за вашу помощь!

Ответы

Ответ 1

Измените != на < в своем предложении WHERE, чтобы гарантировать, что самый низкий идентификатор всегда будет первым:

WHERE b1.Id < b2.Id