1

我有一个 MsSQL 服务器,我正在做的是从表中选择行。目前我有两行,所以我想知道如何在不进行另一个查询的情况下检查第二行之后是否没有其他行?

例如

表用户

id    name    pass

1     joe     123

2     bob     abc

我将如何仅通过查询检查 2 之后是否没有行?我愿意将它与我当前的查询结合起来,它只是选择数据。

4

3 回答 3

2

您可以将查询中的行数作为另一列返回:

SELECT id, name, pass, count(*) over () as rows
FROM users

请记住,这是告诉您查询返回的行数,而不是表中的行数。但是,如果您在选择中指定“TOP n”,则 rows 列将为您提供如果您没有“Top n”时将返回的行数

于 2012-04-18T19:45:18.040 回答
2

如果您尝试分页,诀窍是查询比当前页面实际需要的多一条记录。通过计算结果 ( mysql_num_rows) 并将其与您的页面大小进行比较,您可以确定是否有“下一页”。

如果您使用的是 mysql,您也可以SQL_CALC_FOUND_ROWS()在查询中使用,它会计算没有 LIMIT 子句将返回的行数。也许在 MsSQL 中有一个等价物?

于 2012-04-18T19:46:16.213 回答
1

我假设您手动插入表的前 2 行。

据此,我的想法是在 id 大于 2 的地方进行选择,如下所示:

SELECT * FROM users WHERE id > 2;

我还假设您正在使用 PHP,因此如果没有找到数据,它将mysql_num_rows返回0您,否则它将返回您查询中的行数,现在您知道您需要执行一个while或一些循环来检索 id 编号后的数据2.

于 2012-04-18T20:34:03.727 回答