Php 在SQL中合并2个查询

Php 在SQL中合并2个查询,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我的数据库中有4万条记录。我已经编写了2个SQL查询来获得一些结果!不幸的是,它需要花费大量的时间来运行,并且服务器出现超时错误 我是SQL新手,所以任何人都可以帮助合并我的查询,这样就可以减少执行时间 这是我的密码 $sql="SELECT Website, COUNT(*) FROM entry GROUP BY Website HAVING COUNT(*) = 2 "; $run = mysql_query($sql); while($row=mysql

我的数据库中有4万条记录。我已经编写了2个SQL查询来获得一些结果!不幸的是,它需要花费大量的时间来运行,并且服务器出现超时错误

我是SQL新手,所以任何人都可以帮助合并我的查询,这样就可以减少执行时间

这是我的密码

$sql="SELECT Website, COUNT(*) FROM entry GROUP BY Website HAVING COUNT(*) = 2 "; 
        $run = mysql_query($sql);
        while($row=mysql_fetch_array($run))
        {
              $Website = $row['Website']; 
              $sql2 = "SELECT * FROM entry where Website= '$Website' GROUP BY Address ";
              $run2 = mysql_query($sql2);
              while($row=mysql_fetch_array($run2))
              {
                $id = $row['id'];
                $Website = $row['Website'];
                $Name = $row['Name'];
                $Address = $row['Address'];
                $Country = $row['Country'];
                $City = $row['City'];
              }  
         }  

建议我

在服务器端PHP上运行SQL查询时的一个关键规则是,永远不要在循环中执行SQL查询。发生的情况是,对于循环的每个迭代,服务器都连接并从数据库中获取数据。这会增加数据库上的输入输出操作,导致数据获取速度变慢,如果数据量很大,甚至会导致服务器停机

考虑使用适当的查询并从查询本身中进行分类,避免使用PHP

$sql2 = "SELECT * FROM entry where Website in (SELECT Website FROM entry GROUP BY Website HAVING COUNT(*) = 2) ";

别担心,这是每个人学习的方式。快乐编码

你可以用这个。在where条件下使用

$sql="SELECT * FROM entry where Website in (SELECT Website FROM entry GROUP BY Website HAVING COUNT(*) = 2) "; 
        $run = mysql_query($sql);
        while($row=mysql_fetch_array($run))
        {
                $id = $row['id'];
                $Website = $row['Website'];
                $Name = $row['Name'];
                $Address = $row['Address'];
                $Country = $row['Country'];
                $City = $row['City'];              
         }  

是的,但当我在Phpmyadmin中运行此操作时,我得到错误-->错误SQL查询:Documentation SELECT*FROM entry,其中网站在按条目组选择网站时,COUNT*=2限制为0,25 MySQL说:Documentation 2013-查询期间与MySQL服务器失去连接-因为我不知道条目表中有什么内容,我可能无法提供正确的解决方案。但是我想你必须试着替换查询中的*并放一些更准确的东西。这可以解决问题,甚至可以加快查询速度。使用*不是一种专业的方法,除非您真的想要所有列。是的,但当我在Phpmyadmin中运行此操作时,我得到错误-->错误SQL查询:文档从条目中选择*,其中网站在按条目组中选择网站,按网站计数*=2限制0,25 MySQL说:文档2013-查询过程中与MySQL服务器失去连接-您的代码易受SQL注入攻击。你应该使用事先准备好的陈述。