SQL 检查下一行是否不存在


SQL check if next row doesn't exist

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

例如

表用户

id    name    pass
1     joe     123
2     bob     abc

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

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

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

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

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

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

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

据此,我的想法是只做一个id大于2的选择,就像这样:

SELECT * FROM users WHERE id > 2;

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