有点难度的查询,大家来帮忙看看

duibudui 2007-07-12 03:57:18
表结构如下:
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该怎么写最简单?
...全文
248 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2007-07-12
  • 打赏
  • 举报
回复
--創建測試環境
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
*/
dawugui 2007-07-12
  • 打赏
  • 举报
回复
id fid name
1 10 aaa
2 10 bbb
3 10 ccc
5 11 ddd

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
paoluo 2007-07-12
  • 打赏
  • 举报
回复
--如果fid相同的時候,id不會重復,也可以這麼寫
Select
fid
From

Where id In (1, 2, 3)
Group By
fid
Having Count(fid) = 3
paoluo 2007-07-12
  • 打赏
  • 举报
回复
應該是這個意思


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
xmlquit 2007-07-12
  • 打赏
  • 举报
回复
你舉例說你想要的結果。最好列出來。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧