Выберите отдельное имя со случайным идентификатором - PullRequest
2 голосов
/ 09 декабря 2011

У меня есть таблица с идентификатором и именем (куча других вещей, не относящихся к этому запросу). Теперь мне нужен оператор SQL, который возвращает одну строку для каждого отдельного имени, и в этой строке мне нужно имя и один идентификатор (может быть любым идентификатором).

Таблица выглядит примерно так:

id | name
---+-----
 1 | a2
 2 | a2
 3 | a4
 4 | a4
 5 | a2
 6 | a3

кстати. используя Postgres 8.4

Пробовал различные комбинации группировки или объединения с собой. Возможно ли это даже без создания дополнительных таблиц?

Ответы [ 3 ]

4 голосов
/ 09 декабря 2011

Произвольный выбор возврата минимального идентификатора для имени.

SELECT name, MIN(id)
    FROM YourTable
    GROUP BY name
0 голосов
/ 09 декабря 2011
select ID, name from table group by name;
0 голосов
/ 09 декабря 2011

Вы можете посмотреть PostgreSQL wiki . Он показывает, как выбрать случайные строки.

Вы можете использовать функцию random() для выбора случайных строк, используя ORDER BY предложение SELECT Пример:

SELECT id FROM mytable ORDER BY random()

Затем вы можете использовать GROUP BY для выбора разных имен. Возможно, вам придется ограничить результаты с помощью предложения LIMIT. Таким образом, запрос выглядит примерно так:

SELECT id, name FROM table_name GROUP BY name ORDER BY random() LIMIT 1
...