怎么实现这样的SQL查询语句呢?用一张表统计在另一张表中的

时间:2021-07-08 00:47:20
比如A表有

AID Acontent
1 Acontent1
2 Acontent2
3 Acontent3

BID Bcontent
1 Bcontent11
1 Bcontent22
1 Bcontent33
2 Bcontent21
2 Bcontent22
2 Bcontent23
3 Bcontent31
3 Bcontent32
3 Bcontent33

比如我要查询一条A表的记录,select * from A where A.ID = 1 。这里得到ID为1的记录。但同时在这条记录里边添加一个另名BIDCount,统计A.ID在B表中B.ID个数。数。

11 个解决方案

#1


A.AID为1在B中有1 Bcontent11 
1 Bcontent22 
1 Bcontent33

三个数。

#2


SELECT AID,Acontent,COUNT(*)AS CNT FROM A INNER JOIN B WHERE A.AID=B.BID AND A.AID=1 

#3


怎么实现这样的SQL查询语句呢?用一张表统计在另一张表中的

#4




--1.两表关联
select a.aid , b.Bcontent from a , b where a.aid = b.bid and a.aid = 1

--2.你不如直接查询B表。
select b.* from b where bid = 1

#5


--1.两表关联
select a.aid , b.Bcontent from a , b where a.aid = b.bid and a.aid = 1

--2.你不如直接查询B表。
select b.* from b where bid = 1

--3.如果是求数量
select a.* , (select count(1) from b where b.bid = a.aid) [数量] from a 

#6


但查出来,只要一条记录……

#7


AID Acontent 
1 Acontent1 
2 Acontent2 
3 Acontent3 

BID Bcontent 
1 Bcontent11 
1 Bcontent22 
1 Bcontent33 
2 Bcontent21 
2 Bcontent22 
2 Bcontent23 
3 Bcontent31 
3 Bcontent32 
3 Bcontent33 

只要一条记录,例如:
AID AContent Bid_Count
1   Acontent1 3

是一条记录,好你以上方法查的话,N条记录的。

#8


declare @a table(AID int ,Acontent varchar(10))
insert @a select 1, 'Acontent1' 
insert @a select 2, 'Acontent2' 
insert @a select 3, 'Acontent3' 

declare @b table(BID int ,Bcontent varchar(10))
insert @b select 1, 'Bcontent11' 
insert @b select 1, 'Bcontent22' 
insert @b select 1, 'Bcontent33' 
insert @b select 2, 'Bcontent21' 
insert @b select 2, 'Bcontent22' 
insert @b select 2, 'Bcontent23' 
insert @b select 3, 'Bcontent31' 
insert @b select 3, 'Bcontent32' 
insert @b select 3, 'Bcontent33' 

select *,BIDCount=(select count(1) from @b where aid=bid) from @a where aid=1

AID         Acontent   BIDCount
----------- ---------- -----------
1           Acontent1  3

(1 行受影响)

#9


引用 8 楼 htl258 的回复:
SQL codedeclare @a table(AID int ,Acontent varchar(10))
insert @a select 1, 'Acontent1' 
insert @a select 2, 'Acontent2' 
insert @a select 3, 'Acontent3' 

declare @b table(BID int ,Bcontent varchar(10))
insert @b select 1, 'Bcontent11' 
insert @b select 1, 'Bcontent22' 
insert @b select 1, 'Bcontent33' 
insert @b select 2, 'Bcontent21' 
insert @b select 2, 'Bcontent22' 
insert @b sel…

支持8樓,其實也可用top 1

#10


引用 8 楼 htl258 的回复:
SQL codedeclare @a table(AID int ,Acontent varchar(10))
insert @a select 1, 'Acontent1' 
insert @a select 2, 'Acontent2' 
insert @a select 3, 'Acontent3' 

declare @b table(BID int ,Bcontent varchar(10))
insert @b select 1, 'Bcontent11' 
insert @b select 1, 'Bcontent22' 
insert @b select 1, 'Bcontent33' 
insert @b select 2, 'Bcontent21' 
insert @b select 2, 'Bcontent22' 
insert @b sel…


多谢!!!

强啊。嵌套Select语句,竟然忘记了!!!

#11


多谢这位朋友,明天加分感谢!


现在刚发帖加不了分。

#1


A.AID为1在B中有1 Bcontent11 
1 Bcontent22 
1 Bcontent33

三个数。

#2


SELECT AID,Acontent,COUNT(*)AS CNT FROM A INNER JOIN B WHERE A.AID=B.BID AND A.AID=1 

#3


怎么实现这样的SQL查询语句呢?用一张表统计在另一张表中的

#4




--1.两表关联
select a.aid , b.Bcontent from a , b where a.aid = b.bid and a.aid = 1

--2.你不如直接查询B表。
select b.* from b where bid = 1

#5


--1.两表关联
select a.aid , b.Bcontent from a , b where a.aid = b.bid and a.aid = 1

--2.你不如直接查询B表。
select b.* from b where bid = 1

--3.如果是求数量
select a.* , (select count(1) from b where b.bid = a.aid) [数量] from a 

#6


但查出来,只要一条记录……

#7


AID Acontent 
1 Acontent1 
2 Acontent2 
3 Acontent3 

BID Bcontent 
1 Bcontent11 
1 Bcontent22 
1 Bcontent33 
2 Bcontent21 
2 Bcontent22 
2 Bcontent23 
3 Bcontent31 
3 Bcontent32 
3 Bcontent33 

只要一条记录,例如:
AID AContent Bid_Count
1   Acontent1 3

是一条记录,好你以上方法查的话,N条记录的。

#8


declare @a table(AID int ,Acontent varchar(10))
insert @a select 1, 'Acontent1' 
insert @a select 2, 'Acontent2' 
insert @a select 3, 'Acontent3' 

declare @b table(BID int ,Bcontent varchar(10))
insert @b select 1, 'Bcontent11' 
insert @b select 1, 'Bcontent22' 
insert @b select 1, 'Bcontent33' 
insert @b select 2, 'Bcontent21' 
insert @b select 2, 'Bcontent22' 
insert @b select 2, 'Bcontent23' 
insert @b select 3, 'Bcontent31' 
insert @b select 3, 'Bcontent32' 
insert @b select 3, 'Bcontent33' 

select *,BIDCount=(select count(1) from @b where aid=bid) from @a where aid=1

AID         Acontent   BIDCount
----------- ---------- -----------
1           Acontent1  3

(1 行受影响)

#9


引用 8 楼 htl258 的回复:
SQL codedeclare @a table(AID int ,Acontent varchar(10))
insert @a select 1, 'Acontent1' 
insert @a select 2, 'Acontent2' 
insert @a select 3, 'Acontent3' 

declare @b table(BID int ,Bcontent varchar(10))
insert @b select 1, 'Bcontent11' 
insert @b select 1, 'Bcontent22' 
insert @b select 1, 'Bcontent33' 
insert @b select 2, 'Bcontent21' 
insert @b select 2, 'Bcontent22' 
insert @b sel…

支持8樓,其實也可用top 1

#10


引用 8 楼 htl258 的回复:
SQL codedeclare @a table(AID int ,Acontent varchar(10))
insert @a select 1, 'Acontent1' 
insert @a select 2, 'Acontent2' 
insert @a select 3, 'Acontent3' 

declare @b table(BID int ,Bcontent varchar(10))
insert @b select 1, 'Bcontent11' 
insert @b select 1, 'Bcontent22' 
insert @b select 1, 'Bcontent33' 
insert @b select 2, 'Bcontent21' 
insert @b select 2, 'Bcontent22' 
insert @b sel…


多谢!!!

强啊。嵌套Select语句,竟然忘记了!!!

#11


多谢这位朋友,明天加分感谢!


现在刚发帖加不了分。