我是sql的新手,我遇到了问题。
我有一个通话记录表,其中包含两列Anumber
和Bnumber
。如果有任何数字调用,则会在表中添加一个新行,其中Anumber为Source,Bnumber为Destination。
我已经给出了两个Anumber值(3217913664,3006307180)
现在我必须找到Bnumber中的所有值(由Anumber调用)
假设我的表是:
ANUMBER BNUMBER
------- --------
3217913664 3006307180
3217913664 3212026005
3006307180 3212026005
3006307180 3212026007
3006307180 3212026008
3006307180 3212026009
3217913664 3212026009
现在我想从Bnumber中提取value(3212026005 and 3212026009)
,因为这两个数字都是由给定的数字调用的。所以我基本上只需提取那些被所有给定数字调用的数字。
我的英语不太好,但我想我解释了我的问题。我知道如何实现这种情况?
答案 0 :(得分:1)
这是一种方法:
select bnumber
from t
where anumber in (3217913664, 3006307180)
group by bnumber
having min(anumber) < max(anumber);
如果行没有重复项,那么使用count(*) = 2
是另一种选择。
如果您要测试的anumber
超过2 count(distinct anumber) = n
,请使用n
,其中in
是changeName:function(value){
return(
this.setState({
name: value
}))
},
列表中的值数。< / p>
答案 1 :(得分:0)
你可以尝试这个:
select Bnumber
from yourtable
group by Bnumber
having COUNT(Bnumber) = (SELECT COUNT(*) FROM (SELECT DISTINCT Anumber FROM yourtable) AS T)
这是一个通用的。如果在表中插入另一个Anumber,查询仍然有效。 只有一个警告:也许这不是解决问题的最佳方法,但我现在无法在其他查询中思考。也许以后我会尝试优化查询。