sql查询 排序问题 这是我的分页查询,表里有个 hits列 我希望以hits列从高到低 排列怎么改。

mark4956123 2012-11-26 03:19:44
SELECT top("+this.PAGEROW+") * FROM songinfo WHERE songid NOT IN (SELECT TOP("+num+") songid FROM songinfo)


这是原来的 分页查询。 现在要加上 以hits列 排序 hits列是 int类型。
我要怎么写啊。
...全文
150 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mark4956123 2012-11-26
  • 打赏
  • 举报
回复
引用 13 楼 DBA_Huangzj 的回复:
String sql = "select top("+this.PAGEROW+") ( SELECT top 100 PERCENT * FROM songinfo WHERE songid NOT IN (SELECT TOP("+num+") songid FROM songinfo) order by hits)";
当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。 报错 调试 出来的语句 放到sql server里执行 报错这个
發糞塗牆 2012-11-26
  • 打赏
  • 举报
回复
String sql = "select top("+this.PAGEROW+") ( SELECT top 100 PERCENT * FROM songinfo WHERE songid NOT IN (SELECT TOP("+num+") songid FROM songinfo) order by hits)";
mark4956123 2012-11-26
  • 打赏
  • 举报
回复
引用 11 楼 DBA_Huangzj 的回复:
引用 10 楼 mark4956123 的回复:引用 9 楼 DBA_Huangzj 的回复: 你有整段的代码吗? 怎么联系您?能给我您的QQ吗?直接贴上来吧,我也是抽空上来一下而已,贴出来还能给别人看看
	/**
	 * 分页查询
	 * @param page 当前页数
	 * @return
	 */
	public List<Songs> getSongsPaginQuery(int page){
		List<Songs> songList = new ArrayList<Songs>();
		int num = (page-1) * this.PAGEROW;//要被排除的行数
		String sql = "select top("+this.PAGEROW+") ( SELECT  * FROM songinfo WHERE songid NOT IN (SELECT TOP("+num+") songid FROM songinfo) order by hits)";
		try{
			DBConnection db = new DBConnection();
			ResultSet rs = db.dataQuery(sql);
			while(rs.next()){
				Songs song = new Songs();
				song.setSongid(rs.getInt("songid"));
				song.setTypeid(rs.getInt("typeid"));
				song.setAbc(rs.getString("abc"));
				song.setSongurl(rs.getString("songurl"));
				song.setDateandtime(rs.getString("dateandtime"));
				song.setTitle(rs.getString("title"));
				song.setSinger(rs.getString("singer"));
				song.setImgb(rs.getString("imgb"));
				song.setImgs(rs.getString("imgs"));
				song.setLrc(rs.getString("lrc"));
				song.setChannel(rs.getString("channel"));
				song.setHits(rs.getInt("hits"));
				song.setDemo(rs.getString("demo"));
				
				songList.add(song);
			}
			db.close();
		}catch(Exception e){
			e.printStackTrace();
		}
		return songList;
	}
和java代码没什么关系呀 主要 是 查询语句 我一直 写不出来 要加 按 hits列排序
發糞塗牆 2012-11-26
  • 打赏
  • 举报
回复
引用 10 楼 mark4956123 的回复:
引用 9 楼 DBA_Huangzj 的回复: 你有整段的代码吗? 怎么联系您?能给我您的QQ吗?
直接贴上来吧,我也是抽空上来一下而已,贴出来还能给别人看看
mark4956123 2012-11-26
  • 打赏
  • 举报
回复
引用 9 楼 DBA_Huangzj 的回复:
你有整段的代码吗?
怎么联系您?能给我您的QQ吗?
發糞塗牆 2012-11-26
  • 打赏
  • 举报
回复
你有整段的代码吗?
mark4956123 2012-11-26
  • 打赏
  • 举报
回复
引用 7 楼 DBA_Huangzj 的回复:
我怎么觉得那么别扭?SQL code?1SELECT top("+this.PAGEROW+") * FROM songinfo WHERE songid NOT IN (SELECT TOP("+num+") songid FROM (select * from songinfo order by hits ) a)
除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。 还是这个错误 纠结一下午了。
發糞塗牆 2012-11-26
  • 打赏
  • 举报
回复
我怎么觉得那么别扭?
SELECT top("+this.PAGEROW+") * FROM songinfo WHERE songid NOT IN (SELECT TOP("+num+") songid FROM (select * from songinfo order by hits ) a)
mark4956123 2012-11-26
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
把最后一个括号提前,编程这样: select top(8) ( SELECT * FROM songinfo WHERE songid NOT IN (SELECT TOP(0) songid FROM songinfo)) order by hits 另外,你这语句和你给的那个动态的不一样啊。
消息 116,级别 16,状态 1,第 1 行 当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。 消息 207,级别 16,状态 1,第 1 行 列名 'hits' 无效。 在括号外面 就 得不到 hits这个列了 。另外 第一个错误 怎么解决啊
發糞塗牆 2012-11-26
  • 打赏
  • 举报
回复
把最后一个括号提前,编程这样: select top(8) ( SELECT * FROM songinfo WHERE songid NOT IN (SELECT TOP(0) songid FROM songinfo)) order by hits 另外,你这语句和你给的那个动态的不一样啊。
mark4956123 2012-11-26
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
你这个是放到哪里执行的?
我是把生成出来的语句 放到 sql server 2005里面执行的。
select top(8) ( SELECT  * FROM songinfo WHERE songid NOT IN (SELECT TOP(0) songid FROM songinfo) order by hits)
这个是生成出来的sql语句。
發糞塗牆 2012-11-26
  • 打赏
  • 举报
回复
你这个是放到哪里执行的?
mark4956123 2012-11-26
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
SQL code?1SELECT top("+this.PAGEROW+") * FROM songinfo WHERE songid NOT IN (SELECT TOP("+num+") songid FROM songinfo) order by hits
消息 1033,级别 15,状态 1,第 1 行 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
發糞塗牆 2012-11-26
  • 打赏
  • 举报
回复
SELECT top("+this.PAGEROW+") * FROM songinfo WHERE songid NOT IN (SELECT TOP("+num+") songid FROM songinfo) order by hits

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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