在MS SQL数据库列中查找唯一值

时间:2014-11-20 06:43:01

标签: sql sql-server

我有一组数据如下

number quantity
   1       4
   2       6
   3       7
   4       9
   2       1
   1       2
   5       4

我需要在“number”列中找到唯一值

输出应如下所示:

number quantity
3       7
4       9
5       4

任何帮助将不胜感激。我正在使用MS SQL

6 个答案:

答案 0 :(得分:1)

在内部查询中获取所有不同的数字,然后再与主表一起加入以获得预期的结果。

select o.* 
from mytable o , (select number
from mytable
group by number) dist
where o.number = dist.number

答案 1 :(得分:0)

一种方法可以是使用聚合查询来计算每个数字在子查询中使用它的次数:

SELECT number, quantity
FROM   my_table
WHERE  number IN (SELECT   number
                  FROM     my_table
                  GROUP BY number
                  HAVING   COUNT(*) = 1)

答案 2 :(得分:0)

如果您的列名是表my_table中的my_column,则查询为:

SELECT my_column, COUNT(*) as count
FROM my_table
GROUP BY my_column
HAVING COUNT(*) > 1

这将返回所有具有重复my_column内容的记录,以及此内容在数据库中出现的次数。

您可以在下面的代码中使用欲望输出:

SELECT DISTINCT(my_column), COUNT(*) as count
    FROM my_table
    GROUP BY my_column

答案 3 :(得分:0)

试试这个:

SELECT *
FROM   yourtable t1
WHERE  (SELECT Count(*)
        FROM   yourtable t2
        WHERE  t1.number = t2.number) = 1 

在where子句中查询将返回每个number的出现次数,并用1检查它将只返回那些在表中只出现一次的行。

答案 4 :(得分:0)

您可以使用ROW_NUMBER()分析功能,如

select * from
(
select number, 
quantity,
ROW_NUMBER() OVER(PARTITION BY number ORDER BY number) AS rn
from table1
) tab where rn = 1;

答案 5 :(得分:0)

试试这个:

create table #TableName(number int, quantity int)
insert into #TableName values(1, 2)
insert into #TableName values(1, 4)
insert into #TableName values(2, 4)

SELECT number, quantity
FROM   #TableName
WHERE  number 
IN(SELECT number
          FROM #TableName
          GROUP BY number
          HAVING COUNT(NUMBER) = 1)