相关疑难解决方法(0)

如何使用Microsoft SQL Server实现LIMIT?

我有这个查询与mysql:

select * from table1 LIMIT 10,20
Run Code Online (Sandbox Code Playgroud)

我怎么能用Microsoft sql做到这一点?

sql sql-server migration

120
推荐指数
9
解决办法
27万
查看次数

在Microsoft SQL Server 2000中模拟MySQL LIMIT子句

当我使用Zend Framework的数据库组件时,我们尝试抽象LIMITMySQL,PostgreSQL和SQLite支持的子句的功能.也就是说,创建查询可以这样做:

$select = $db->select();
$select->from('mytable');
$select->order('somecolumn');
$select->limit(10, 20);
Run Code Online (Sandbox Code Playgroud)

当数据库支持时LIMIT,这将生成如下SQL查询:

SELECT * FROM mytable ORDER BY somecolumn LIMIT 10, 20
Run Code Online (Sandbox Code Playgroud)

对于不支持的数据库品牌来说,这更复杂LIMIT(顺便说一句,该子句不是标准SQL语言的一部分).如果可以生成行号,则将整个查询作为派生表,并在外部查询中使用BETWEEN.这是Oracle和IBM DB2的解决方案.Microsoft SQL Server 2005具有类似的行号功能,因此可以这样编写查询:

SELECT z2.*
FROM (
    SELECT ROW_NUMBER OVER(ORDER BY id) AS zend_db_rownum, z1.*
    FROM ( ...original SQL query... ) z1
) z2
WHERE z2.zend_db_rownum BETWEEN @offset+1 AND @offset+@count;
Run Code Online (Sandbox Code Playgroud)

但是,Microsoft SQL Server 2000没有此ROW_NUMBER()功能.

所以我的问题是,你能想出一种方法来模拟LIMITMicrosoft SQL Server 2000中的功能,只使用SQL吗?不使用游标或T-SQL或存储过程.它必须支持LIMITcount和offset 两个参数.使用临时表的解决方案也是不可接受的.

编辑:

MS SQL …

mysql sql sql-server zend-framework

39
推荐指数
2
解决办法
5万
查看次数

结果集到分页

如何将Resultset对象转换为JSP上的分页视图?

例如,这是我的查询和结果集:

pst = con.prepareStatement("select userName, job, place from contact");
rs = pst.executeQuery();
Run Code Online (Sandbox Code Playgroud)

java pagination jsp jdbc

18
推荐指数
1
解决办法
3万
查看次数

LIMIT OFFSET,LENGTH是否需要ORDER BY进行分页?

我有一张MyISAM表,有28,900个人.我正在以1500块为单位处理它,这样的查询:

SELECT * FROM table WHERE id>0 LIMIT $iStart,1500
Run Code Online (Sandbox Code Playgroud)

然后我循环这个并每次增加$ iStart 1500.

问题是在某些情况下查询返回相同的行.例如,LIMIT 0,1500查询返回与LIMIT 28500,1500查询相同的一些行.

如果我没有对行进行排序,我可以不期望使用LIMIT进行分页吗?

(当这些查询发生时,表是静态的,没有其他任何会改变其行的查询).

mysql

13
推荐指数
2
解决办法
2942
查看次数

SQL查询从列表中获取最高"n"分数

我想找到解决现实问题的不同方法:想象一下比赛或比赛,用户收集积分.您必须构建一个查询以显示具有最佳"n"分数的用户列表.

我正在做一个例子来澄清.让我们说这是用户表,获得的积分:

UserId - Points
1      - 100
2      -  75
3      -  50
4      -  50
5      -  50
6      -  25
Run Code Online (Sandbox Code Playgroud)

如果我想要前3个分数,结果将是:

UserId - Points
1      - 100
2      -  75
3      -  50
4      -  50
5      -  50
Run Code Online (Sandbox Code Playgroud)

这可以在视图或存储过程中实现,如您所愿.我的目标数据库是Sql Server.实际上我解决了这个问题,但我认为有不同的方法来获得结果...比我的更快或更有效率.

sql sql-server puzzle

6
推荐指数
1
解决办法
2万
查看次数

选择范围内的数据库行

我想从表中选择A和B之间的行.该表至少包含A行,但可能少于B行.例如,如果A = 2,B = 5且表有3行,则应返回第2行和第3行.

我怎么能在这样的范围内得到行?

我正在使用Microsoft SQL Server 2008.

sql select

2
推荐指数
1
解决办法
938
查看次数

SQL - 限制结果

我想知道你是否可以做这样的事情是Microsoft SQL Server 2k8 R2

假设我有一个返回100行数据的查询.

他们是一种可以传递一些变量的方法,例如@lower_limit和@upper_limit.

然后我希望查询记录下限和上限之间的行

例如:

@lower_limit = 5
@upper_limt  10
Run Code Online (Sandbox Code Playgroud)

会从100条记录中返回5-10行.

sql limit sql-server-2008-r2

2
推荐指数
1
解决办法
835
查看次数

带有额外WHERE和ORDER BY子句的MSSQL TOP(LIMIT)操作

我第一次遇到在MSSQL中使用LIMIT子句的问题时很困惑.无法让它如何使分页脚本工作.

我想使用LIMIT子句和额外的WHERE和ORDERY BY条件.欢迎任何帮助!

这是我的MySQL查询:

$query = mysql_query("SELECT FLD_NAME, FLD_AGE FROM TBL_USERS WHERE FLAG='1' ORDER BY FLD_AGE DESC LIMIT 0,50");

//rows_per_page = 50;
Run Code Online (Sandbox Code Playgroud)

如何将此MySQL查询转换为MSSQL查询?

提前致谢!

php sql-server limit

0
推荐指数
1
解决办法
3045
查看次数

如何只获得表连接的第一个结果?

我有一个问题:

SELECT  

    Segment_ID = Segment_ID.Segment_ID,
    Sprav_093.Name as Road_Wear

FROM dbo.Road
LEFT JOIN Segment_ID  ON Road.Road_ID = Segment_ID.Road_ID
LEFT JOIN Driveway_Pavement ON Segment_ID.Segment_ID = Driveway_Pavement.Segment_ID
LEFT JOIN Sprav_093 ON Driveway_Pavement.Kod_Spr093 = Sprav_093.Kod_Spr
Run Code Online (Sandbox Code Playgroud)

工作正常.有几个行与同一Segment_IDDriveway_Pavement.所以我想要获得这些行中的第一行.我该怎么做?

sql sql-server

-1
推荐指数
1
解决办法
81
查看次数