Ответ 1
Измените !=
на <
в своем предложении WHERE, чтобы гарантировать, что самый низкий идентификатор всегда будет первым:
WHERE b1.Id < b2.Id
Я пытаюсь написать простой запрос в 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;
Как я могу избавиться от повторяющихся пар? Любые идеи?
Буду признателен за вашу помощь!
Измените !=
на <
в своем предложении WHERE, чтобы гарантировать, что самый низкий идентификатор всегда будет первым:
WHERE b1.Id < b2.Id