2009-07-13 113 views
1

我有一个表有单个字段。和它有一个值(3,7,9,11,7,11) 现在我想要一个查询将选择发生的次数最少的值,如果有一个与最小出现次数相等的然后使用最小的数字SQL:从出现最少次数的列中检索值

在这种情况下,答案是3

+0

“最小权重”是什么意思? – 2009-07-13 11:17:19

+0

最小权重意味着该值应该是最小值 – Santanu 2009-07-13 11:17:59

+0

因此,在出现最少次数的情况下,它也必须是最小值。你是这个意思吗? – 2009-07-13 11:19:45

回答

9

事情是这样的:

SELECT TOP 1 COUNT(*), myField 
FROM myTable 
GROUP BY (myField) 
ORDER BY COUNT(*) ASC 

补充:而要考虑到抢七的情况:

SELECT TOP 1 COUNT(*), myField 
FROM myTable 
GROUP BY (myField) 
ORDER BY COUNT(*) ASC, myField ASC 
2

MySQLPostgreSQL

SELECT * 
FROM (
     SELECT field, COUNT(*) AS cnt 
     FROM mytable 
     GROUP BY 
       field 
     ) q 
ORDER BY 
     cnt, field 
LIMIT 1 
0

假设你正在使用SQL Server:如果你有最少的频繁数的关系,并希望一切关系返回,那么你可以做这样的事情:

DECLARE @temp table (
    count int, 
    myField int 
) 

INSERT @temp 
SELECT COUNT(*), myField 
FROM myTable 
GROUP BY (myField) 

DECLARE @minCount int 

SELECT @minCount = MIN(count) 
FROM @temp 

SELECT count, myField 
FROM @temp 
WHERE count = @minCount 
相关问题