2016-08-03 70 views
0

我不確定是否可以在SQL本身中只使用一個查詢來完成它,但這就是我要問的原因。選擇出現次數最少的列值

有沒有辦法讓表中最少出現列值?

的表看起來像:

| Id | Value | 
-------------- 
| 1 | Banana| 
| 2 | Carrot| 
| 3 | Apple | 
| 4 | Apple | 
| 5 | Banana| 
| 6 | Apple | 
| 7 | Apple | 
| 8 | Banana| 
| 9 | Apple | 

現在有一個「胡蘿蔔」的值用最少的出現,如何將一個SQL模樣讓用最少出現的價值?有點令人困惑,也許你會第一次嘗試不明白。謝謝。

回答

0

下面是一個方法:

select value 
from t 
group by value 
order by count(*) 
fetch first 1 row only; 

fetch first 1 row only是ANSI標準的語法,由幾個數據庫的支持。有些拼寫爲limitselect top 1

+0

請試試看。謝謝 –

1

讓我們重新創建測試用例:

sqlite> create table vegetables(id int, value text); 
sqlite> insert into vegetables values('1', 'Banana'); 
sqlite> insert into vegetables values('2', 'Carrot'); 
sqlite> insert into vegetables values('3', 'Apple'); 
sqlite> insert into vegetables values('4', 'Apple'); 
sqlite> insert into vegetables values('5', 'Banana'); 
sqlite> insert into vegetables values('6', 'Apple'); 
sqlite> insert into vegetables values('7', 'Apple'); 
sqlite> insert into vegetables values('8', 'Banana'); 
sqlite> insert into vegetables values('9', 'Apple'); 

檢查的數據是一樣的你:

sqlite> select * from vegetables; 
1|Banana 
2|Carrot 
3|Apple 
4|Apple 
5|Banana 
6|Apple 
7|Apple 
8|Banana 
9|Apple 

如果你想用最少的出現蔬菜:

sqlite> select value from vegetables group by value order by count(value) limit 1; 
Carrot 

如果你想要的蔬菜出現次數最多:

sqlite> select value from vegetables group by value order by count(value) desc limit 1; 
Apple