将循环的mysql查询转换为单个查询

时间:2014-12-23 10:32:25

标签: php mysql

我有一个SQL查询

$var = 123;
$sql="SELECT COL1, COL2, COL3 FROM `table1`  WHERE `COL1`='$var'";

此查询的结果(循环)用于从另一个表中获取每一行的计数。

$value = $row['COL2'];
$var2= mysql_num_rows(mysql_query("SELECT MY_COL FROM `table2` WHERE `column1` ='".$var1."' AND column2 = $value"));

我试过这个结合两个

$sql = "SELECT A.COL1, A.COL2, A.COL3, COUNT(B.MY_COL) FROM `table1` A LEFT JOIN `table2` B ON A.COL2 = B.column2 WHERE A.COL1=$var"

但结果是错误的。使用ON A.COL2 = B.column2 是否正确? 如何将这两个查询合并为一个以减少对mysql的调用?

Table1的记录可能不在表2中。

2 个答案:

答案 0 :(得分:1)

试试这个:

$sql = "SELECT A.COL1, A.COL2, A.COL3, COUNT(B.MY_COL) FROM `table1` A LEFT JOIN `table2` B ON A.COL2 = B.column2 AND A.COL1=$var"

答案 1 :(得分:0)

$var2= mysql_num_rows(mysql_query("SELECT MY_COL FROM `table2` WHERE `column1` ='".$var1."' AND column2 
  IN (
    SELECT COL2 FROM `table1`  WHERE `COL1`='$var'
  )
));

使用MySQL WHERE IN

注意:不要使用mysql_函数,不推荐使用它们,将来的PHP版本将删除它们。