Выберите уникальные упорядоченные значения нескольких столбцов в sql
Я использую таблицу с парой геометрий в каждом ряду. Мне бы хотелось, чтобы каждая геометрия появлялась в моей базе данных только один раз. Я отсортировал пару по расстоянию. Мне удалось получить различный geom1 или geom2, но никогда в одно и то же время. Идентификаторы связаны с их соответствующими геометриями.
| id1 | id2 | distance| | id1 | id2 | distance|
| 1 | 2 | 3 | | 1 | 2 | 3 |
| 2 | 1 | 4 | -> | 2 | 1 | 7 |
| 2 | 2 | 7 |
| 1 | 1 | 9 |
Моя таблица содержит более 2 миллионов строк, поэтому производительность является проблемой. Я учил создавать несколько временных таблиц, где я группируюсь по id1, а затем по id2, собираю пропущенные значения и группирую снова и снова... Но если у кого-то есть идея получше, это было бы удивительно.
Спасибо,
2 ответа
Вы, кажется, хотите:
select t1.*
from table t1
where id2 = (select max(t1.id2) from table t2 where t2.id1 = t1.id1);
Если я правильно понимаю, вы ищете разные тройки id1, id2 и расстояния:
SELECT DISTINCT id1, id2 , distance FROM <table name>;
или же
SELECT id1, id2 FROM <table name> GROUP BY id1, id2, distance;