CREATE TABLE tb(cid INT,className VARCHAR(10))
GO
INSERT tb SELECT 1,"A"
UNION ALL SELECT 2,"B"
UNION ALL SELECT 3,"C"
GO
--ta,tb以cid关联,取每个cid中id最小的一条记录,
需要 tb.className,tb.cid,ta.id,ta.name列。
SELECT b.*,a.*
FROM tb b
INNER JOIN ta a
ON a.cid = b.cid
WHERE NOT EXISTS(SELECT 1 FROM ta WHERE cid=a.cid AND id<a.id)
GO
--多表与单表取数思路一对致,多一次连表操作,
可以照上面单表的把其它写法改出来.
--同样,取每个cid中id最小的前n条记录,一样的方法
--需要注意的是连表时,可以用内连,左连,或是老式的
多表写法(from ta ,tb where ta.cid=tb.cid默认转换为内连),
采用哪种方式依具你的业务需求。
--------------------------------------------
/* |