我有一个MsSQL服务器,我正在做的是从表中选择行。目前我有两行,所以我想知道如何在没有进行其他查询的情况下检查第二行之后是否没有其他行?
例如
表用户
id name pass
1 joe 123
2 bob abc
如果仅查询,我如何检查2之后是否没有行?我愿意将它与我当前的查询相结合,该查询只选择数据。
答案 0 :(得分:2)
您可以将查询中的行数作为另一列返回:
SELECT id, name, pass, count(*) over () as rows
FROM users
请记住,这会告诉您查询返回的行数,而不是表中的行数。但是,如果在select中指定了“TOP n”,则rows列将为您提供在没有“Top n”的情况下将返回的行数
答案 1 :(得分:2)
如果你试图分页,那就是查询一条记录,而不是当前页面实际需要的记录。通过计算结果(mysql_num_rows
)并将其与您的页面大小进行比较,您可以确定是否存在“下一页”。
如果您使用的是mysql,您还可以在查询中使用SQL_CALC_FOUND_ROWS()
,它会计算在没有LIMIT子句的情况下返回的行数。也许在MsSQL中有相同的东西?
答案 2 :(得分:1)
我假设您手动插入表格的前两行。
根据这个,我的想法是只做一个id大于2的选择:
SELECT * FROM users WHERE id > 2;
我还假设您正在使用PHP,因此如果找不到数据,mysql_num_rows
将返回0
,否则它会返回查询中的行数,现在您知道需要做一个while
或一些循环来检索id号为2之后的数据。