mysql查询选择取决于2个表

时间:2014-07-20 13:59:09

标签: php mysql sql

我已经达到了我想要的PHP代码。但是我的网站太慢了,因为它一遍又一遍地重复着,

$pages= mysql_query("SELECT * FROM ex_instagram_p WHERE type = '".follow."' AND active=1 And username !='".$username."' ORDER BY cpc DESC" );
$prow = mysql_fetch_array($pages);



Do{
$dollowed = mysql_query("SELECT * FROM exchanges WHERE user = '".$username."' AND exid = '".$prow['id']."'");

$followed = mysql_num_rows($dollowed);
;}while($followed > 0 && $prow = mysql_fetch_array($pages));

其实我可以多解释一下代码, 我需要从第一个表中选择最大CPC行 但也要确保:

type = '".follow."' AND active=1 And username !='".$username."' ORDER BY cpc DESC"

这就是问题, 在继续之前我需要确保' id'第一个表的字段表格在第二个表上没有用户名

的记录

是否有结果它会再次使用下一行重复, 一遍又一遍,直到找到满足两个表格的结果。 这个方法太重了

我希望得到一种更简单,更轻松的方式,谢谢

我试图这样做,但它不起作用

$prow= mysql_query("SELECT *
 FROM (mysql_query("SELECT * FROM ex_instagram_p WHERE type = '".follow."' AND active=1         
And username !='".$username."' ORDER BY cpc DESC" );)
INNER JOIN (mysql_query("SELECT * FROM exchanges WHERE user = '".$username."'");)
ON ex_instagram_p.id=exchanges.exid";); 

1 个答案:

答案 0 :(得分:1)

您可以在一个查询中执行此操作。遵循逻辑有点难,但我认为这是您想要的查询:

SELECT i.*
FROM ex_instagram_p i join
     exchanges e
     on i.id = e.exid
WHERE i.type = '".follow."' AND i.active=1 And
      i.username <> '".$username."' and e.user = '".$username."'
ORDER BY i.cpc DESC
LIMIT 1;

在数据库中完成工作通常比在应用程序中循环遍历要快得多。毕竟,这就是数据库的优点 - 管理和查询大量数据。