62,047
社区成员
发帖
与我相关
我的任务
分享
select 表1.id,表1.name,count(time) as times from 表1 left join 表2 on 表1.id = 表2.id group by 表1.id ,表1.name
SELECT t.id, 表1.name, t.time2
FROM (
SELECT id, COUNT(id) AS times FROM 表2 GROUP BY time
) AS t LEFT JOIN 表1 ON t.id = 表1.id
CREATE TABLE t1 (
id INT,
NAME NVARCHAR (20)
)
CREATE TABLE t2
(
id INT,
TIME int
)
INSERT INTO t1 SELECT 1,'aaa' UNION ALL
SELECT 2,'bbb' UNION ALL
SELECT 3,'ccc'
INSERT INTO t2 SELECT 1,110707 UNION ALL
SELECT 1,110708 UNION ALL
SELECT 2,110707
select a.*,times=sum(case when b.id is null then 0 else 1 end)
from t1 a left join t2 b on a.id=b.id
group by a.id,a.name
/*
id NAME times
----------- -------------------- -----------
1 aaa 2
2 bbb 1
3 ccc 0
CREATE PROCEDURE [dbo].[grid]
AS
BEGIN
SELECT a.id,a.NAME,(SELECT COUNT(1) FROM dbo.t2 b WHERE b.id=a.id ) AS times FROM dbo.t1 a
END;
EXEC dbo.grid
/*
id NAME times
----------- -------------------- -----------
1 aaa 2
2 bbb 1
3 ccc 0
(3 個資料列受到影響)
*/
是不是用視圖更好呢?
CREATE TABLE t1 (
id INT,
NAME NVARCHAR (20)
)
CREATE TABLE t2
(
id INT,
TIME int
)
INSERT INTO t1 SELECT 1,'aaa' UNION ALL
SELECT 2,'bbb' UNION ALL
SELECT 3,'ccc'
INSERT INTO t2 SELECT 1,110707 UNION ALL
SELECT 1,110708 UNION ALL
SELECT 2,110707
select t1.id,t1.name,(select isnull(count(1),0) from t2 where t1.id=t2.id) as times
from t1
id name times
----------- -------------------- -----------
1 aaa 2
2 bbb 1
3 ccc 0
(3 row(s) affected)