是否有更好的方法来检查表中是否至少有两行用于给定条件?
请看这个PHP代码:
$result = mysql_query("SELECT COUNT(*) FROM table WHERE .......");
$has_2_rows = (mysql_result($result, 0) >= 2);
我不喜欢这个的原因是因为我假设MySQL将获取并计算所有匹配的行,这对于大的结果来说可能很慢。
我想知道当找到两行时,MySQL是否会停止并返回“1”或true。最后LIMIT 2
会有帮助吗?
谢谢。
答案 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
并切换到PDO
或mysqli
。
答案 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';
}