检查MySQL中的查询是否至少有2行

时间:2013-02-17 00:38:25

标签: mysql

是否有更好的方法来检查表中是否至少有两行用于给定条件?

请看这个PHP代码:

$result = mysql_query("SELECT COUNT(*) FROM table WHERE .......");
$has_2_rows = (mysql_result($result, 0) >= 2);

我不喜欢这个的原因是因为我假设MySQL将获取并计算所有匹配的行,这对于大的结果来说可能很慢。

我想知道当找到两行时,MySQL是否会停止并返回“1”或true。最后LIMIT 2会有帮助吗?

谢谢。

3 个答案:

答案 0 :(得分:3)

这是一个很好的问题,是的,有一种方法可以使这个效率非常高,即使对于大型表格也是如此。

使用此查询:

SELECT count(*) FROM (
    SELECT 1
    FROM table
    WHERE .......
    LIMIT 2
) x

所有工作都由内部查询完成,内部查询在获得2行时停止。另请注意select 1,它可以提高效率,因为它不必从列中检索任何值 - 只是常量1

count(*)最多可计算2行。

注意:由于这是一个SQL问题,我从答案中省略了PHP代码。

答案 1 :(得分:1)

下面的查询只会根据您的要求检查两行。 mysql_num_rows可以检查返回的行数而不进行任何循环。

$result = mysql_query("SELECT col1 FROM t1 WHERE ... LIMIT 2");
if (mysql_num_rows($result) == 2) {

如果可以,请避免使用ext/mysql并切换到PDOmysqli

答案 2 :(得分:-1)

$result = mysql_query("SELECT COUNT(*) FROM table WHERE .......");

if(mysql_num_rows($result) > 1) 
{
 echo 'at least 2 rows';
}

else
{
 echo 'less than 2 rows';
}