Как исключить дубликаты из запроса select?
прежде чем задать этот вопрос, я искал с помощью Google, но я не мог понять или, возможно, не мог найти решение, подходящее для моей ситуации.
Итак, у меня есть одна таблица с 10 столбцами, я хочу исключить дубликаты из выберите результат. И в результате должны быть представлены все столбцы, которые имеют уникальный userid's
+-----------------------------------+------+---------------------+------+ | name | yr | some Columns |userID| +-----------------------------------+------+---------------------+------+ | abc | 2000 | | 10 | | jack | 2000 | | 11 | | dadas | 2000 | | 12 | | jack | 2004 | ............. | 11 | | jack | 2000 | ........... | 11 | | nell | 2006 | ............. | 13 | | ...... | 2000 | ............. | 1 | | ............. | 2000 | ............. | 2 | | again | 2000 | ............. | 3 | | again | 2000 | | 3 | | ....... | 1973 | ............. | 2 | | abc | 2000 | | 10 |
4 ответов
Если вам не нужно держать разные годы, просто используйте DISTINCT ON (FIELD_NAME)
SELECT DISTINCT ON (userID) userdID, name, yr FROM TABLE_NAME
на PostgreSQL а также SQL Server 2005+, DB2 и более поздние версии Oracle (9+), вы можете использовать функцию windowing ROW_NUMBER ()
select *
from
(
select *, ROW_NUMBER() over (partition by userID order by yr desc) rown
) X
where rown = 1