2013-03-27 72 views
1

運行此查詢,選擇從數據庫中唯一記錄

select * from table; 

返回以下

|branch | number | 
------------------- 
| 1 | 123 | 
| 1 | 001 | 
| 2 | 123 | 
| 3 | 123 | 
| 4 | 123 | 
| 1 | 123 | 
| 1 | 789 | 
| 2 | 123 | 
| 3 | 123 | 
| 4 | 009 | 

我想找到所獨有的唯一分支機構值1

| 1 | 001 | 
| 1 | 789 | 

可以這樣沒有將數據存儲在單獨的表中?我試過幾個「select distinct」查詢&似乎沒有得到我期待的結果。

回答

1

我猜我想說的是,我想找到所有僅適用於分支1的數字。如果它們在任何其他分支中找到,我不想看到它們。

我想這就是你想要的。

SELECT distinct number 
FROM MyTable 
WHERE branch=1 and number not in 
(SELECT distinct number 
FROM MyTable 
WHERE branch != 1) 
+0

非常感謝!這看起來像它正是我所需要的。 – webhead74 2013-03-27 19:48:15

0

試試這個:

SELECT branch, number 
FROM table 
GROUP BY branch, number 

這裏是一個SQLFiddle讓你看看

如果你想將其限制在只有1處,則只需添加一個WHERE子句。

SELECT branch, number 
FROM table 
WHERE branch = 1 
GROUP BY branch, number 
2
SELECT branch, number 
FROM table 
WHERE branch = 1 
GROUP BY branch, number 
2

如果您不需要任何聚集,可以使用distinct代替group by

select distinct branch 
,  number 
from YourTable 
where branch = 1 
+0

謝謝,但是這不是我正在尋找的東西。運行該查詢將返回可能在其他分支中找到的「數字」列值。我想我想說的是,我想查找所有隻有分支1唯一的數字。如果他們在任何其他分支中找到,我不想看到它們。 – webhead74 2013-03-27 19:15:34

0

要選擇在number列獨特的全值,並有1 branch值,可以使用下面的代碼:

SELECT branch, number 
FROM table1 
WHERE number IN (
SELECT number 
FROM table1 
GROUP BY number 
HAVING (COUNT(number) = 1) 
) 
AND branch = 1 

對於一個演示中看到http://sqlfiddle.com/#!2/97145/62