紧急求教!请教两条SQL语句

黑猫紧张 2005-05-26 02:23:31
SQL1:

Tb1:
NewsID NewsTitle TypeID
1 Title1 1
2 Title2 2
3 Title3 2
4 Title4 3
5 Title5 2
6 Title6 1
7 Title7 3
8 Title8 2
9 Title9 3

请选出如下表:
NewsID NewsTitle TypeID
1 Title1 1
6 Title6 1
2 Title2 2
3 Title3 2
4 Title4 3
7 Title7 3

也就是每个TypeID的选出两条数据!

------------------
SQ2:

Tb1:
TypeID TypeName
1 n1
2 n2
3 n3

Tb2:
NewsID NewsTitle TypeID
1 Title1 1
2 Title2 2
3 Title3 2
4 Title4 3
5 Title5 2
6 Title6 1
7 Title7 3
8 Title8 2
9 Title9 3

要选出这样的数据:
Tb1所有的TypeName,和相应TypeName在Tb2的数量

大家帮帮我,应该不是很难的,急啊!!
...全文
149 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhwly 2005-05-26
  • 打赏
  • 举报
回复
1
select * from Tb1 a
where NewsID in(
select top 2 NewsID from Tb1 where TypeID=a.TypeID)

2
select A.TypeName , B.Cnt from
Tb1 A left join
(select TypeId , count(*) as Cnt from Tb2 group by TypeID ) B
on A.Typeid = B.TypeID
luisic 2005-05-26
  • 打赏
  • 举报
回复
问题2

select a.typeid,a.typename,count(b.typeid) as cnt from newtable2 a left join newtable
b on a.typeid=b.typeid group by a.typeid,a.typename
luisic 2005-05-26
  • 打赏
  • 举报
回复
问题1

select * from newtable a
where NewsID in(
select top 2 NewsID from newtable where TypeID=a.TypeID) order by typeid
sally612 2005-05-26
  • 打赏
  • 举报
回复
问题1
declare @a table (NewsID int, NewsTitle char(10), TypeID int )

insert @a select 1, 'Title1' , 1
insert @a select 2 , 'Title2' , 2
insert @a select 3 , 'Title3' , 2
insert @a select 4 , 'Title4' , 3
insert @a select 5 , 'Title5' , 2
insert @a select 6 , 'Title6' , 1
insert @a select 7 , 'Title7' , 3
insert @a select 8 , 'Title8' , 2
insert @a select 9 , 'Title9' , 3


select * from @a a where
(select count(1) from @a b where a.typeid=b.typeid and a.newsid<b.newsid)<2
order by a.typeid
goodboycwy 2005-05-26
  • 打赏
  • 举报
回复
select * from Tb1 a
where NewsID in(
select top 2 NewsID from Tb1 where TypeID=a.TypeID)
order by tyid
goodboycwy 2005-05-26
  • 打赏
  • 举报
回复
select top 2 * from tb
WHERE tyid=1
UNION

select top 2 * from tb
WHERE tyid=2
UNION

select top 2 * from tb
WHERE tyid=3
UNION
ORDER BY tyid
zjcxc 元老 2005-05-26
  • 打赏
  • 举报
回复
--Tb1所有的TypeName,和相应TypeName在Tb2的数量
select *,(select count(*) from Tb2 where TypeID=a.TypeID)
from Tb1 a


--或者:
select a.*,b.cnt
from Tb1 a left join(
select TypeID,cnt=count(*) from Tb2
group by TypeID
)b on a.TypeID=b.TypeID


--或者:
select a.TypeID,a.TypeName,count(b.TypeID) as cnt
from Tb1 a left join Tb2 b on a.TypeID=b.TypeID
group by a.TypeID,a.TypeName
zjcxc 元老 2005-05-26
  • 打赏
  • 举报
回复
--1. 每个TypeID的选出两条数据!
--1.a
select * from Tb1 a
where NewsID in(
select top 2 NewsID from Tb1 where TypeID=a.TypeID)

--1. b
select a.*
from Tb1 a,(
select ID1=min(NewsID),ID2=max(NewsID)
from Tb1 group by TypeID
)b where a.NewsID in(b.ID1,b.ID2)
wyb0026 2005-05-26
  • 打赏
  • 举报
回复
create table tab (NewsID int, NewsTitle char(10), TypeID int )
create table tab2 (TypeID int, TypeName char(10))

insert tab2 select 1,'n1'
insert tab2 select 2,'n2'
insert tab2 select 3,'n3'


insert tab select 1, 'Title1' , 1
insert tab select 2 , 'Title2' , 2
insert tab select 3 , 'Title3' , 2
insert tab select 4 , 'Title4' , 3
insert tab select 5 , 'Title5' , 2
insert tab select 6 , 'Title6' , 1
insert tab select 7 , 'Title7' , 3
insert tab select 8 , 'Title8' , 2
insert tab select 9 , 'Title9' , 3


select tab.* from (select max(newsid) as id from tab group by typeid
union
select min(newsid) from tab group by typeid) as t0 inner join tab on id=newsid
order by typeid

select typename,count(*) as 数量 from tab inner join tab2 on tab.typeid=tab2.typeid
group by typename

drop table tab
drop table tab2
wyb0026 2005-05-26
  • 打赏
  • 举报
回复
Sql1:

create table tab (NewsID int, NewsTitle char(10), TypeID int )

insert tab select 1, 'Title1' , 1
insert tab select 2 , 'Title2' , 2
insert tab select 3 , 'Title3' , 2
insert tab select 4 , 'Title4' , 3
insert tab select 5 , 'Title5' , 2
insert tab select 6 , 'Title6' , 1
insert tab select 7 , 'Title7' , 3
insert tab select 8 , 'Title8' , 2
insert tab select 9 , 'Title9' , 3

select tab.* from (select max(newsid) as id from tab group by typeid
union
select min(newsid) from tab group by typeid) as t0 inner join tab on id=newsid
order by typeid

drop table tab
sq2:正在想
Comer 2005-05-26
  • 打赏
  • 举报
回复
sql1:参考:http://community.csdn.net/Expert/topic/4035/4035328.xml?temp=.8111994

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧