当前位置:编程学习 > C#/ASP.NET >>

求一条SQL语句。`````````急

一个新闻表 一个新闻图片表
一个新闻有多张图片 

现在我想在视图里查询TOP5的 新闻ID不重复的 5条记录, 而且还需要ORDER BY 排序,

说白了就是 想查最新发布的5条新闻 的5张图片 不管这条新闻有几张 只要一张。

请高手帮忙, 谢谢 --------------------编程问答-------------------- select distinct top 5 *  from table  --------------------编程问答-------------------- select distinct top 5 *  from 新闻表 join 新闻图片表 
on 新闻表.id=新闻图片表.id 
order by 日期字段 desc --------------------编程问答--------------------
引用 1 楼 koukoujiayi 的回复:
select distinct top 5 *  from table


distinct 难道后面不跟参数吗, 居然好使,谢谢你 --------------------编程问答--------------------
引用 1 楼 koukoujiayi 的回复:
select distinct top 5 *  from table


这样查如果一张新闻有五张图片  会查出上什么?
 想查最新发布的5条新闻 的5张图片 不管这条新闻有几张 只要一张。 
 
 还是一条新闻而已.. --------------------编程问答-------------------- 学习了 --------------------编程问答--------------------
引用 2 楼 koukoujiayi 的回复:
select distinct top 5 *  from 新闻表 join 新闻图片表
on 新闻表.id=新闻图片表.id
order by 日期字段 desc

up --------------------编程问答-------------------- 挺绕的。。。学习了!distinct 后面应该跟个字段吧,应该是新闻ID。去掉重复的新闻,因为是5个不同新闻的图片 --------------------编程问答-------------------- distinct是数据库语句关键字 --------------------编程问答--------------------

select top 5 p.*  from 新闻表 p,新闻图片表 t 
where p.ID = t.新闻表ID and not exists(select ID from 新闻图片表  where id > t.Id and t.新闻表ID = 新闻表ID)
order by p.Id
--------------------编程问答-------------------- 学习了 --------------------编程问答--------------------  想查最新发布的5条新闻 的5张图片 不管这条新闻有几张 只要一张。
  貌似很难哦。。。期待结果。 --------------------编程问答--------------------
1.    
select top m * from tablename where id not in (select top n id from tablename order by id asc/*|desc*/)    
  
2.    
select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入到临时表    
set rowcount n   --只取n条结果   
select * from 表变量 order by columnname desc    
  
3.    
select top n * from     
(select top m * from tablename order by columnname) a    
order by columnname desc    
  
  
4.如果tablename里没有其他identity列,那么:    
先生成一个序列,存储在一临时表中.   
select identity(int) id0,* into #temp from tablename    
  
取n到m条的语句为:    
select * from #temp where id0 > =n and id0  <= m    
  
如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:    
exec sp_dboption 你的DB名字,'select into/bulkcopy',true    
  
  
5.如果表里有identity属性,那么简单:    
select * from tablename where identity_col between n and m     
  
6.SQL2005开始.可以使用row_number() over()生成行号   
;with cte as  
(   
 select id0=row_number() over(order by id),* from tablename   
)   
select * from cte where id0 between n to m  

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2009/02/18/3906309.aspx
--------------------编程问答-------------------- select distinct top 5 p.*  from 新闻表 p,新闻图片表 t 
where p.ID = t.新闻表ID order by p.Id
--------------------编程问答--------------------
引用 13 楼 chuzhaowei 的回复:
select distinct top 5 p.*  from 新闻表 p,新闻图片表 t
where p.ID = t.新闻表ID order by p.Id

这样查如果一张新闻有五张图片  会查出上什么? 
想查最新发布的5条新闻 的5张图片 不管这条新闻有几张 只要一张。 

还是一条新闻而已..
--------------------编程问答-------------------- select distinct top 5 *  from newss join (select distinct a.img,a.newsid,(select top 1 imgid from newsimage where img=a.img and newsid=a.newsid order by newid()) as imgid from newsimage a) e 
on newss.newsid=e.newsid 
order by uptime desc

其中 news为新闻表(newsid,uptime时间),newsimage为新闻对应的图片表(imgid,img图片,newsid对应的新闻编号)

刚试了下楼上的方法貌似不行吧!嘿嘿..... --------------------编程问答-------------------- 嘿嘿。。。我只试了‘select distinct top 5 *  from 新闻表 join 新闻图片表 
on 新闻表.id=新闻图片表.id 
order by 日期字段 desc’这个 
好像不行

 这页面打开了蛮久,没刷新,不晓得有这么多人回复啦!

不好意思啦!刚那句‘刚试了下楼上的方法貌似不行吧’ --------------------编程问答--------------------
select top 5 *,(select top 1 图片url from 图片表 where 图片ID=新闻表.新闻表和图片表中的外键ID)as 图片url from 新闻表 order by 时间
--------------------编程问答-------------------- 先根据新闻ID分组查找最大的时间,和图片ID,然后就可以根据查询出来的结果排序了。 --------------------编程问答-------------------- 没听明白啥意思,是新闻表里有个新闻图片字段,然后里面有好多图片id在这个字段里面就取一个图片id么 --------------------编程问答-------------------- 不会。。。

顶下! --------------------编程问答-------------------- . --------------------编程问答-------------------- select distinct top 5 *  from 新闻表 join 新闻图片表 
on 新闻表.id=新闻图片表.id 
order by 日期字段 desc --------------------编程问答-------------------- select top 5 a.*,b.图片 from 新闻表 as a  join (select * from 新闻图片表 group by 新闻ID) b
on a.新闻ID=b.新闻ID order by a.时间 desc --------------------编程问答-------------------- 您老又来了,。。还是想不出。、
你能在代码里面处理吗?? --------------------编程问答-------------------- 图片采用max 关联

select a.*,b.Pic from News a
left join (select News_ID ,max(Pic) as pic from News_Pic group by News_ID ) b on a.News_ID=b.News_ID
--------------------编程问答-------------------- select distinct top 5 *  from 新闻表 join 新闻图片表 
on 新闻表.id=新闻图片表.id 
order by 日期字段 desc --------------------编程问答-------------------- select distinct top 5 *  from 新闻表 join 新闻图片表 
on 新闻表.id=新闻图片表.id 
order by 日期字段 desc
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,