表结构如下:
id fid name
1 10 aaa
2 10 bbb
3 10 ccc
5 11 ddd
希望查出类似,id=1 and id=2 and id=3的结果
类似::
select * from talbeA where id=1 and id=2 and id=3 and fid=10
如果fid只符合=1 and =2,就返回 null
sql该怎么写最简单?
...全文
2485打赏收藏
有点难度的查询,大家来帮忙看看
表结构如下: id fid name 1 10 aaa 2 10 bbb 3 10 ccc 5 11 ddd 希望查出类似,id=1 and id=2 and id=3的结果 类似:: select * from talbeA where id=1 and id=2 and id=3 and fid=10 如果fid只符合=1 and =2,就返回 null sql该怎么写最简单?
--創建測試環境
Create Table 表
(id Int,
fid Int,
name Varchar(10))
Insert 表 Select 1, 10, 'aaa'
Union All Select 2, 10, 'bbb'
Union All Select 3, 10, 'ccc'
Union All Select 5, 11, 'ddd'
GO
--測試
Select A.fid
From 表 A
Inner Join 表 B
On A.fid = B.fid
Inner Join 表 C
On A.fid = C.fid
Where A.id = 1 And B.id = 2 And C.id = 3
--如果fid相同的時候,id不會重復,也可以這麼寫
Select
fid
From
表
Where id In (1, 2, 3)
Group By
fid
Having Count(fid) = 3
GO
--刪除測試環境
Drop Table 表
--結果
/*
fid
10
*/
select fid , result = 'null' from
(
select distinct id , fid from tb where id = 1
union all
select distinct id , fid from tb where id = 2
union all
select distinct id , fid from tb where id = 3
) t
group by fid
having count(*) < 3