繁体   English   中英

如何消除选择查询中的重复?

[英]How to eliminate duplicates from select query?

在提出这个问题之前,我使用Google进行了搜索,但我无法理解或者找不到适合我情况的解决方案。

所以,我有一个包含10列的表,我想从选择结果中消除重复。 并且在结果中应该呈现具有唯一用户ID的所有列

+-----------------------------------+------+---------------------+------+
| 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 |

如果您不需要保留不同的年份,请使用DISTINCT ON(FIELD_NAME)

SELECT DISTINCT ON (userID) userdID, name, yr FROM TABLE_NAME

试试这个:

SELECT * FROM TABLE_NAME GROUP BY userID

一个简单的方法是:

SELECT DISTINCT (userID) userdID, name, yr FROM TABLE_NAME

对于PostgreSQL以及SQL Server 2005 +,DB2和更高版本的Oracle(9+),您可以使用窗口函数ROW_NUMBER()

select *
from
(
select *, ROW_NUMBER() over (partition by userID order by yr desc) rown
) X
where rown = 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM