22,210
社区成员
发帖
与我相关
我的任务
分享
--------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-04-26 00:10:36
-- Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
-- Blog : http://blog.csdn.net/htl258
--------------------------------------------------------------------------
--> 生成测试数据表:users
IF NOT OBJECT_ID('[users]') IS NULL
DROP TABLE [users]
GO
CREATE TABLE [users]([users_id] INT)
INSERT [users]
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3
GO
--SELECT * FROM [users]
--> 生成测试数据表:usercenter
IF NOT OBJECT_ID('[usercenter]') IS NULL
DROP TABLE [usercenter]
GO
CREATE TABLE [usercenter]([usercenter_id] INT,[usercenter_userid] INT)
INSERT [usercenter]
SELECT 1,1 UNION ALL
SELECT 2,1 UNION ALL
SELECT 3,3 UNION ALL
SELECT 4,3 UNION ALL
SELECT 5,3
GO
--SELECT * FROM [usercenter]
-->SQL查询如下:
select a.[users_id],SUM(case when b.usercenter_userid IS null then 0 else 1 end) as countnum
from [users] as a
left join [usercenter] as b
on a.users_id=b.usercenter_userid
group by a.[users_id]
/*
users_id countnum
----------- -----------
1 2
2 0
3 3
(3 行受影响)
*/
select users_id, count(usercenter_userid) as countnum
from users left join usercenter
on users_id=usercenter_userid
group by users_id
create table users(users_id int)
insert into users values(1)
insert into users values(2)
insert into users values(3)
create table usercenter
(usercenter_id int,usercenter_userid int)
insert into usercenter values(1, 1)
insert into usercenter values(2, 1)
insert into usercenter values(3, 3)
insert into usercenter values(4, 3)
insert into usercenter values(5, 3)
go
--1
select m.users_id , isnull(n.countnum,0) countnum from users m
left join
(select usercenter_userid , count(1) countnum from usercenter group by usercenter_userid) n
on m.users_id = n.usercenter_userid
order by m.users_id
--2
select m.users_id , (select count(1) from usercenter where usercenter_userid = m.users_id) countnum from users m
drop table users,usercenter
/*
users_id countnum
----------- -----------
1 2
2 0
3 3
(所影响的行数为 3 行)
*/
--------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2010-04-26 00:10:36
-- Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 3)
-- Blog : http://blog.csdn.net/htl258
--------------------------------------------------------------------------
--> 生成测试数据表:users
IF NOT OBJECT_ID('[users]') IS NULL
DROP TABLE [users]
GO
CREATE TABLE [users]([users_id] INT)
INSERT [users]
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3
GO
--SELECT * FROM [users]
--> 生成测试数据表:usercenter
IF NOT OBJECT_ID('[usercenter]') IS NULL
DROP TABLE [usercenter]
GO
CREATE TABLE [usercenter]([usercenter_id] INT,[usercenter_userid] INT)
INSERT [usercenter]
SELECT 1,1 UNION ALL
SELECT 2,1 UNION ALL
SELECT 3,3 UNION ALL
SELECT 4,3 UNION ALL
SELECT 5,3
GO
--SELECT * FROM [usercenter]
-->SQL查询如下:
select [users_id],(select count(*) from [usercenter] where [usercenter_userid]=t.[users_id]) as countnum from [users] t
/*
users_id countnum
----------- -----------
1 2
2 0
3 3
(3 行受影响)
*/
create table users(users_id int)
insert into users values(1)
insert into users values(2)
insert into users values(3)
create table usercenter
(usercenter_id int,usercenter_userid int)
insert into usercenter values(1, 1)
insert into usercenter values(2, 1)
insert into usercenter values(3, 3)
insert into usercenter values(4, 3)
insert into usercenter values(5, 3)
go
select m.users_id , isnull(n.countnum,0) countnum from users m
left join
(select usercenter_userid , count(1) countnum from usercenter group by usercenter_userid) n
on m.users_id = n.usercenter_userid
order by m.users_id
drop table users,usercenter
/*
users_id countnum
----------- -----------
1 2
2 0
3 3
(所影响的行数为 3 行)
*/
select m.users_id , isnull(n.countnum,0) countnum from users m
left join
(select usercenter_userid , count(1) countnum from usercenter group by usercenter_userid) n
on m.users_id = n.usercenter_userid
order by m.users_id