2013-06-18 67 views
4

我有一個這樣的表...取單ID的記錄不僅沒有任何其他

oid  id 
35  1 
43  1 
46  1 
43  2 
49  2 

ID = 1現在我想pnly那些只屬於1沒有任何其他記錄IDS。

即O/P - 35,46

我不需要的oid = 43個BCZ它屬於2也。

我不知道如何在stackoverflow表中寫下我的問題,所以請忽略我錯誤的詢問方式。

感謝

+0

爲什麼你不想ID = 43? –

+0

所以基本上你想選擇表中不重複的行(關於oid)? –

+0

@sharif因爲43是表中的一個重複的OID –

回答

5

嘗試以下:

SELECT * FROM `table` 
WHERE id = 1 AND oid NOT IN (SELECT oid FROM `table` where id != 1) 
+1

+1這是他實際上在尋找的東西:) – swapnesh

+0

'NOT EXISTS'可能會更好 – Kermit

2
select count(oid), oid from table 
where id = 1 
group by oid 
having count(oid) = 1 
+0

也是我需要的那些記錄,ID = 1 SO它應該是... SELECT COUNT(ID),OID,從表ID其中,ID = 1 通過編號 組計數(id)= 1 –

+0

'WHERE id = 1'? – Aquillo

+0

@Aquillo謝謝我錯過了那個部分 –

3

這裏的另一種方式,

SELECT oid 
FROM tableName 
GROUP BY oid 
HAVING COUNT(DISTINCT id) = 1 AND -- counts the number of ID for OID 
     MAX(ID) = 1     -- checks if the value of ID is equal to 1 

輸出

╔═════╗ 
║ OID ║ 
╠═════╣ 
║ 35 ║ 
║ 46 ║ 
╚═════╝ 
1
SELECT * 
FROM TABLE_NAME 
WHERE id = 1 
AND oid NOT IN (SELECT DISTINCT oid FROM TABLE_NAME where id != 1) 
相關問題