求一条外键记录数目查询语句;
例如:(其中B表的a_id是外键。。即A表的主键) A表 : id name B表:id a_id content
1 类型1 1 1 内容1
2 类型2 2 1 内容2
3 类型3 3 2 内容3
4 3 内容4
5 3 内容5
6 3 内容6要查询结果为:
id name count(就是这个count了,所拥有的外键记录条数)
1 类型1 2
2 类型2 1
3 类型3 3望高手解决下。。顺便讲解下原理。。
例如:(其中B表的a_id是外键。。即A表的主键) A表 : id name B表:id a_id content
1 类型1 1 1 内容1
2 类型2 2 1 内容2
3 类型3 3 2 内容3
4 3 内容4
5 3 内容5
6 3 内容6要查询结果为:
id name count(就是这个count了,所拥有的外键记录条数)
1 类型1 2
2 类型2 1
3 类型3 3望高手解决下。。顺便讲解下原理。。
group by A.id,A.name
from a
from a
-- -----------t_mac 小编-------------
---希望有天成为大虾----
-- =========================================IF OBJECT_ID('a') IS NOT NULL
DROP TABLE a
GO
CREATE TABLE a(id int,name varchar(10))
go
insert into a
select 1,'类型1' union all
select 2,'类型2' union all
select 3,'类型3'
go
IF OBJECT_ID('b') IS NOT NULL
DROP TABLE b
GO
CREATE TABLE b(id int,a_id int ,coount varchar(10))
go
insert into b
select 1,1,'内容1' union all
select 2,1,'内容2' union all
select 3,2,'内容3' union all
select 4,3,'内容4' union all
select 5,3,'内容5' union all
select 6,3,'内容6' select ID,name,(select COUNT(*) from B where A.id=B.a_id group by B.a_id)
from a
/*------------
----------- ---------- -----------
1 类型1 2
2 类型2 1
3 类型3 3(3 行受影响)
-------*/
FROM A aa
DECLARE @tb_A TABLE(ID INT, NAMES NVARCHAR(20))
INSERT INTO @tb_A(id, NAMES)
SELECT 1, '类型1' UNION ALL
SELECT 2, '类型2' UNION ALL
SELECT 3, '类型3' DECLARE @tb_B TABLE(id INT, a_id INT, CONTENTs NVARCHAR(20))
INSERT INTO @tb_B(id, a_id, CONTENTs)
SELECT 1, 1, '内容1' UNION ALL
SELECT 2, 1, '内容2' UNION ALL
SELECT 3, 2, '内容3' UNION ALL
SELECT 4, 3, '内容4' UNION ALL
SELECT 5, 3, '内容5' UNION ALL
SELECT 6, 3, '内容6'SELECT A.id, A.NAMES, COUNT(a_ID)
FROM @tb_A A INNER JOIN @tb_B B ON A.ID = B.a_id
GROUP BY A.id, A.NAMES(3 row(s) affected)(6 row(s) affected)
id NAMES
----------- -------------------- -----------
1 类型1 2
2 类型2 1
3 类型3 3(3 row(s) affected)
on a.id=b.a_id