很典型的基本问题:A,B两个表,
A是新闻类别
id class_Name
1 生活
2 娱乐
3 健康
4 综合
B是新闻信息表
id class_ID Topic
1 1 标题xxxxxxxxxxxx
2 1 标题xxxxxxxxxxxx
3 2 标题xxxxxxxxxxxx
4 2 标题xxxxxxxxxxxx
5 3 标题xxxxxxxxxxxx
1 3 标题xxxxxxxxxxxx
2 4 标题xxxxxxxxxxxx
3 4 标题xxxxxxxxxxxx
4 5 标题xxxxxxxxxxxx
5 5 标题xxxxxxxxxxxx
1 1 标题xxxxxxxxxxxx
2 1 标题xxxxxxxxxxxx
3 3 标题xxxxxxxxxxxx
4 3 标题xxxxxxxxxxxx
5 3 标题xxxxxxxxxxxx
现在要实现一句语句
1.依据表A,调取表B的新闻,每一个A调取两个B记录,根据 表A的class_Name顺序 表B的ID倒叙,
2.依据表A,调取表B的新闻,每一个A只调取一个B记录,根据ID倒叙,怎样速度最快!
------解决思路----------------------
1.依据表A,调取表B的新闻,每一个A调取两个B记录,根据 表A的class_Name顺序 表B的ID倒叙,
SELECT2.依据表A,调取表B的新闻,每一个A只调取一个B记录,根据ID倒叙,怎样速度最快!
A.*,T.id,T.Topic
FROM
A OUTER APPLY(SELECT TOP 2 * FROM B WHERE A.id=B.class_ID ORDER BY B.id DESC)T
ORDER BY A.id,T.id DESC
TOP 2 换成TOP 1
你要速度快的话,得结合你的数据本身了
SELECT * FROM(你试下哪种速度快用哪种吧
SELECT ROW_NUMBER()OVER(PARTITION BY A.id ORDER BY B.id DESC)RN,A.*,B.id bid,B.Topic
FROM A LEFT JOIN B ON A.id=B.class_ID
)T
WHERE RN=1
什么?SQL2000?那你只能更慢了