你不要告诉我:
Select top 2 * from New_Info Where New_Type in (1,2,3,4) Order By New_Id Desc
那你一定误会我意思了
你也不要告诉我,俩俩分割
我需要的是代码,可以解决问题的代码不是思路!
100分,有本事全拿去!!
...全文
19316打赏收藏
如何取New_Type为1,2,3,4这四个每个值时的前俩个数据
首先申明 帮顶有分。答案回答的越详细分值越高! 你不要告诉我: Select top 2 * from New_Info Where New_Type in (1,2,3,4) Order By New_Id Desc 那你一定误会我意思了 你也不要告诉我,俩俩分割 我需要的是代码,可以解决问题的代码不是思路! 100分,有本事全拿去!!
最好能用一个存储过程,或者建立一个临时表!
这是前人的可以解决问题的,但是可能会影响速度
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%>
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
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")
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