如何取New_Type为1,2,3,4这四个每个值时的前俩个数据

Alexa_Min 2006-04-13 03:27:14
首先申明 帮顶有分。答案回答的越详细分值越高!

你不要告诉我:
Select top 2 * from New_Info Where New_Type in (1,2,3,4) Order By New_Id Desc
那你一定误会我意思了

你也不要告诉我,俩俩分割
我需要的是代码,可以解决问题的代码不是思路!

100分,有本事全拿去!!
...全文
193 16 打赏 收藏 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
niewenmin 2006-04-14
  • 打赏
  • 举报
回复
最好能用一个存储过程,或者建立一个临时表!
这是前人的可以解决问题的,但是可能会影响速度
iSQL = "Select Top 10 * From(Select Top 2 * From New_Info Where New_Type =1 Union All Select top 4 * From New_Info Where New_Type =2 Union All Select top 4 * From New_Info Where New_Type =3) As T Order by New_ID Desc"

<%if rs("New_Type")= 1 then %><font color="#ff0000">[网站新闻]</font><% elseif rs("New_Type")= 2 then %><font color="#F79638">[公司新闻]</font><%else%><% response.Write("<font color=""#cc0000"">[集团新闻]</font>") %><% end if%>
xyhabc 2006-04-13
  • 打赏
  • 举报
回复
基本上嗯,没明白
subasan 2006-04-13
  • 打赏
  • 举报
回复
分开四条来写吧。。。
select top 2 * from ** where New_Type =1

select top 2 * from ** where New_Type =2

select top 2 * from ** where New_Type =3

select top 2 * from ** where New_Type =4

这样比楼上写成一条的运行速度要快。。没必要联合。。最耗资源
Alexa_Min 2006-04-13
  • 打赏
  • 举报
回复
SELECT TOP 2 * FROM(
SELECT TOP 2 * FROM New_Info WHERE New_Type =1
UNION ALL
SELECT TOP 2 * FROM New_Info WHERE New_Type =2
UNION ALL
SELECT TOP 2 * FROM New_Info WHERE New_Type =3
UNION ALL
SELECT TOP 2 * FROM New_Info WHERE New_Type =4
) AS T ORDER BY New_ID DESC


这个可以,但是就是太烦琐了点,有没有简单点的????还有,我如何在读数据的时候判断出该条数据是哪个Type里面的?并且标出出处!
比如说某条数据是从type3里面出来 他属于集团新闻,我应该怎么做??
是是非非 2006-04-13
  • 打赏
  • 举报
回复
楼上的汗!
你写和直接从总记录取前2个有什么区别???
================
第一个TOP 多少你可以自己改
也可以不要
是是非非 2006-04-13
  • 打赏
  • 举报
回复
如果你不知道怎么动态连接SQL语句的话
给你一个现成的函数


Public Function T(cnt,ids)
Dim s : s="SELECT TOP " & cnt & " * FROM (" & vbCrLf
Dim idsa,i
idsa=Split(ids,",")
For i=LBound(idsa) To UBound(idsa)
If IsNumeric(idsa(i)) Then
s=s & "SELECT TOP 2 * FROM New_Info WHERE New_Type=" & idsa(i) & " ORDER BY New_ID DESC " & vbCrLf & _
"UNION ALL " & vbCrLf
End If
Next
s=s & "SELECT TOP 2 * FROM New_Info WHERE 1<>1 ) ORDER BY New_ID DESC"
T=s
End Function
Response.Write T(5,"1,2,3,4,5,6")
youzi520 2006-04-13
  • 打赏
  • 举报
回复
楼上的汗!
你写和直接从总记录取前2个有什么区别???
是是非非 2006-04-13
  • 打赏
  • 举报
回复
SELECT TOP 2 * FROM(
SELECT TOP 2 * FROM New_Info WHERE New_Type =1
UNION ALL
SELECT TOP 2 * FROM New_Info WHERE New_Type =2
UNION ALL
SELECT TOP 2 * FROM New_Info WHERE New_Type =3
UNION ALL
SELECT TOP 2 * FROM New_Info WHERE New_Type =4
) AS T ORDER BY New_ID DESC
Alexa_Min 2006-04-13
  • 打赏
  • 举报
回复
晕 这样还没有听明白啊???
fangq 2006-04-13
  • 打赏
  • 举报
回复
我基础本上没听懂
Alexa_Min 2006-04-13
  • 打赏
  • 举报
回复
就是我数据库里面有个New_Info的表里面有个字段为New_Type
New_Type=1的时候是网站新闻
New_type=2的时候是公司新闻
New_type=3的时候是集团新闻
New_type=4的时候是人事任免

我现在需要在数据库里面得到这四个New_Type最新的前面俩个值列在一起,Order By New_Id Desc!
youzi520 2006-04-13
  • 打赏
  • 举报
回复
写个循环也可以得到,但不知道记录是干什么
需要的用数组
DIM I,SUM
for i=1 to sum 'sum type 的个数值
select top 2 * New_Info Where New_Type="&i&" Order By New_Id Desc

next

如需要进行判断记录数
是是非非 2006-04-13
  • 打赏
  • 举报
回复
1、没看懂你的意思,你应该把数据表结构发出来
2、可以解决问题的是思路而不光是代码!
3、100分不是100万,分不是万能的
youzi520 2006-04-13
  • 打赏
  • 举报
回复
你得到这些记录干什么?
ruide205 2006-04-13
  • 打赏
  • 举报
回复
用union联合下不行吗?
youzi520 2006-04-13
  • 打赏
  • 举报
回复
先顶下再写代码

28,402

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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