2016-08-22 34 views
-1

我有我的數據庫表如下:查詢消協NN

enter image description here

NB:
ID_A外鍵引用(ID)
ID_B外鍵引用B(ID)

現在我的問題是這樣的:
假設一個A id這樣的列表{12,15,26},我想找到B的所有值,並將所有值關聯到集合中。 我可以做這樣的事情:

select ID_B from AB where ID_A = 12 
intersect 
select ID_B from AB where ID_A = 15 
intersect 
select ID_B from AB where ID_A = 26 

但它不是那麼表演和優雅。這是正確的方法來做到這一點?

而且,如果我想找到具有最大n個錯誤的集合中的值的結果? (例如,n = 2 - >查找所有具有集合中所有值的記錄以及所有具有+2(最多兩個值)和-2(相減最多兩個值)的記錄值在集合中)。

回答

1

做一個GROUP BY,使用HAVING,以確保所有不同ID_A值發現:

select ID_B 
from AB 
where ID_A in (12, 15, 26) 
group by ID_B 
having count(distinct ID_A) = 3