如果它们的行相等,则比较两个表

时间:2015-01-16 01:13:50

标签: php mysql sql

我有三张桌子。

deliverable_category 交付 passed_deliverable

我想比较这两个表(可交付和传递可传递),检查相同可交付类别的行数是否相等。

这就是我所拥有的:

  $query2=mysql_query("SELECT * FROM deliverable WHERE deliverable_category_id=3 ");
   if($row2=mysql_num_rows($query2)>0){
     $query3=mysql_query("SELECT * FROM passed_deliverable WHERE deliverable_category_id=3"); 
   }
    if($row3=mysql_num_rows($query3)>0){
      if ($row2=$row3){
        echo "EQUAL ";
    } 
      }
       else { 
        echo "NOT EQUAL "; 
       }

4 个答案:

答案 0 :(得分:4)

  

"哇,它有效。感谢@ Fred-ii先生 - Mark Yu"

的答案

您目前正在分配=,而不是将==if ($row2=$row3)进行比较

将其更改为if ($row2==$row3)

答案 1 :(得分:2)

从数据库的角度来看,这看起来非常低效,返回一组行,包含行中的每个值,这样你就可以得到一个计数?为什么不让数据库只返回计数。而不是在两个单独的查询中执行此操作,为什么不在同一查询中返回这些计数?

您只能运行一个查询:

SELECT ( SELECT COUNT(1) 
           FROM deliverable 
          WHERE deliverable_category_id=3
       ) AS cnt_deliverable
    ,  ( SELECT COUNT(1) 
           FROM passed_deliverable 
          WHERE deliverable_category_id=3
       ) AS cnt_passed_deliverable

然后对返回的两个值进行比较。


对于所有在这个世界上美好而美好的人的爱...请停止使用mysql界面。它被弃用了。新的开发应该使用mysqli或PDO。

为什么不检查查询返回的代码,验证它是否正确执行?或者,我们只想让我们调用无效查询句柄的函数死掉。

停止疯狂。

停止。

答案 2 :(得分:2)

?? "检查同一可交付类别的行数是否相等。"

你能做到吗

SELECT IF((SELECT COUNT( * ) 
                  FROM  deliverable )= (SELECT COUNT( * )
                                                     FROM passed_deliverable),  '_TRUE_','_FALSE_') AS theTest

在php中完成查询并执行简单的逻辑。

???

答案 3 :(得分:1)

$num_rows1 = mysql_num_rows(mysql_query(SELECT * FROM deliverable WHERE deliverable_category_id=3));
$num_rows2 = mysql_num_rows(mysql_query(SELECT * FROM passed_deliverable WHERE deliverable_category_id=3));

if($num_rows1 != $num_rows2)
    echo "not equal";