SQL Server输出不一致的数据

时间:2015-03-16 15:14:44

标签: php sql sql-server

我的查询结果很奇怪。

<?
include('conf/conector.php');
echo "start";
$connSQL = mssql_connect($AconnSQL[$CONF_connSQL_default][1], $AconnSQL[$CONF_connSQL_default][2], $AconnSQL[$CONF_connSQL_default][3]);
mssql_select_db($AconnSQL[$CONF_connSQL_default][4],$connSQL);
$result = mssql_query("SELECT TOP 300 coditm, descripcion, codsbr FROM items WITH(NOLOCK) WHERE itemprefi='B' AND descripcion != '' AND descripcion IS NOT NULL");
echo "<br>rows: ".mssql_num_rows($result).'<br>';
mssql_free_result($result);
mssql_close($connSQL);
echo "end";
include('../includes/funciones/conector_by.php');
?>

上面的代码打印“rows:300”。这是因为“TOP 300”。

但如果我跑(使用相同的代码):

SELECT coditm, descripcion, codsbr
FROM items WITH(NOLOCK) 
WHERE itemprefi='B' AND descripcion != '' AND descripcion IS NOT NULL

打印“rows:272”(如果我使用mssql_fetch_array执行'while',我也会得到272行。)

如果我把“TOP 500”我也得到了272行。

这只是疯了但它变得更加疯狂......

如果我跑:

SELECT count(*) as test
FROM items WITH(NOLOCK)
WHERE itemprefi='B' AND descripcion != '' AND descripcion IS NOT NULL

测试列是1936年(这是实际的行数)。

我完全糊涂了,我不知道在哪里搜索错误。我一直在使用mssql_ *很长一段时间(在同一台服务器上),我从来没有遇到这样的问题。它只发生在这张桌子上。

0 个答案:

没有答案