一个棘手的SQL条件限制
答案:3 悬赏:10 手机版
解决时间 2021-03-25 23:13
- 提问者网友:喧嚣尘世
- 2021-03-25 16:59
一个棘手的SQL条件限制
最佳答案
- 五星知识达人网友:走死在岁月里
- 2021-03-25 18:09
select a.*
from table1 a
where aid in
( select aid
from table1
group by aid
having count(1)>1
)
and bid<=2
union all
select a.*
from table1 a
where aid in
( select aid
from table1
group by aid
having count(1)=1
)追问多谢不弃的帮忙,非常感谢,昨天一直在试验,现在才回复,我用的是zxchan1992这位仁兄的办法,已成功。
from table1 a
where aid in
( select aid
from table1
group by aid
having count(1)>1
)
and bid<=2
union all
select a.*
from table1 a
where aid in
( select aid
from table1
group by aid
having count(1)=1
)追问多谢不弃的帮忙,非常感谢,昨天一直在试验,现在才回复,我用的是zxchan1992这位仁兄的办法,已成功。
全部回答
- 1楼网友:孤独入客枕
- 2021-03-25 19:17
;with temp as (
select AID from t1
group by AID having count(*)=1)
select * from t1
where AID in (select AID from temp)
union
select * from t1
where AID not in (select AID from temp) and (BID=1 or BID=2)
这个样子?追问回复的迟了,兄弟,谢谢你了,我用的是 zxchan1992 这位的方法,已经成功了,但还是谢谢你的帮助。
select AID from t1
group by AID having count(*)=1)
select * from t1
where AID in (select AID from temp)
union
select * from t1
where AID not in (select AID from temp) and (BID=1 or BID=2)
这个样子?追问回复的迟了,兄弟,谢谢你了,我用的是 zxchan1992 这位的方法,已经成功了,但还是谢谢你的帮助。
- 2楼网友:动情书生
- 2021-03-25 19:05
create table T
(
ID int,
AID int,
BID int
)
--Aid=1,BID=1,2在查询结果中
insert into T values(1, 1, 1)
insert into T values(2, 1, 2)
insert into T values(3, 1, 3)
insert into T values(4, 1, 4)
--Aid=2只有一条,不管Bid多少都在查询结果中
insert into T values(5, 2, 7)
--Aid=3,只有Bid=2在查询结果中
insert into T values(6, 3, 2)
insert into T values(7, 3, 3)
insert into T values(8, 3, 4)
--Aid=4,Bid=1在查询结果中
insert into T values(9, 4, 1)
insert into T values(10, 4, 1)
Select ID,AID,Bid From
(
Select *,COUNT(*) Over(PARTITION by Aid) As Y
From T
) s Where (BID in(1,2) ) or Y=1
追问
大兄弟,真心谢谢你的帮助,感觉花了你不少时间啊,用你的办法已成功实现SQL,大赞。
大哥,真不好意思,刷新页面的时候手快点错了采纳,对不住啊,我真在申诉,希望可以撤销。追答没事,解决问题了就好追问刷新的时候页面跳了一下,就点到其它地方了,正在申诉,不好意思。非常感谢你的帮助。
(
ID int,
AID int,
BID int
)
--Aid=1,BID=1,2在查询结果中
insert into T values(1, 1, 1)
insert into T values(2, 1, 2)
insert into T values(3, 1, 3)
insert into T values(4, 1, 4)
--Aid=2只有一条,不管Bid多少都在查询结果中
insert into T values(5, 2, 7)
--Aid=3,只有Bid=2在查询结果中
insert into T values(6, 3, 2)
insert into T values(7, 3, 3)
insert into T values(8, 3, 4)
--Aid=4,Bid=1在查询结果中
insert into T values(9, 4, 1)
insert into T values(10, 4, 1)
Select ID,AID,Bid From
(
Select *,COUNT(*) Over(PARTITION by Aid) As Y
From T
) s Where (BID in(1,2) ) or Y=1
追问
大兄弟,真心谢谢你的帮助,感觉花了你不少时间啊,用你的办法已成功实现SQL,大赞。
大哥,真不好意思,刷新页面的时候手快点错了采纳,对不住啊,我真在申诉,希望可以撤销。追答没事,解决问题了就好追问刷新的时候页面跳了一下,就点到其它地方了,正在申诉,不好意思。非常感谢你的帮助。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯