Выберите уникальные упорядоченные значения нескольких столбцов в sql - PullRequest
0 голосов
/ 28 июня 2018

Я использую таблицу с парой геометрий в каждом ряду. Мне бы хотелось, чтобы каждая геометрия появлялась в моей базе данных только один раз. Я отсортировал пару по расстоянию. Мне удалось различить 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 ]

0 голосов
/ 28 июня 2018

Вы, кажется, хотите:

select t1.*
from table t1
where id2 = (select max(t1.id2) from table t2 where t2.id1 = t1.id1);
0 голосов
/ 28 июня 2018

если я правильно понимаю, вы ищете разные тройки id1, id2 и расстояния:

SELECT DISTINCT id1, id2 , distance FROM <table name>;

или

SELECT id1, id2 FROM <table name> GROUP BY id1, id2, distance;
...