2010-09-10 22 views
4

我有2列ID, ID_PROJ_CSRT-SQL如何从一列中选择没有重复值的行?

该表的内容的表是:

ID  ID_PROJ_CSR 
------------------ 
747 222 < 
785 102 
786 222 < 
787 223 
788 224 

我想选择的ID,但如果从ID_PROJ_CSR任何值是重复的,我需要选择任何包含重复的值(在例子中,行中选择ID, OR

我尝试:

SELECT * FROM my_table tab 
WHERE tab.id_proj_csr = (SELECT TOP 1 id_proj_csr 
         FROM my_table mt 
         WHERE mt.id_proj_csr = tab.id_proj_csr) 
+0

可能类似'select ID from my_table where ID_PROJ_CSR IN(通过ID_PROJ_CSR从my_table组中选择ID_PROJ_CSR HAVING count(ID)> 1)' – taro 2010-09-10 07:44:52

回答

16

您需要GROUP BY:

SELECT MAX(ID) as [ID], ID_PROJ_CSR 
FROM my_table 
GROUP BY ID_PROJ_CSR 
+1

+1 Nice and simple。认为它也值得一提,你通过使用MAX来解决重复ID问题。 – kevchadders 2010-09-10 07:48:40

+0

如果表格有更多列来检索?我有一个类似的问题,如果我只想要id和id_proj_csr,给定的响应工作,但是当我需要更多的列来检索它开始要求将它们添加到组,并开始检索不正确的记录。 – brayancastrop 2015-09-22 04:42:37

+0

@brayancastrop - 您可以使用MAX(any_column)或MIN(any_column)为该列选择单个值 – cjk 2015-09-22 10:17:20

1

这里省略任何有重复值的情况下,所以你只能得到没有重复行:

SELECT * 
FROM my_table 
GROUP BY ID_PROJ_CSR 
HAVING count(ID_PROJ_CSR) = 1; 
相关问题