我有2张数据表a表
有 字段titleb表
也有字段title
a表中有1000条数据,b表中有10条数据要求:查询a表的title,若a.title 在 b.title中,则a.title存入 $array1中,如果sizeof($array1)>5 ,则不存。若 若a.title 不在 b.title中,则 则a.title存入 $array2中,如果sizeof($array2)>5 ,则不存。我的做法
$sql="select title from a"
........
while($tpl2result=mysql_fetch_array($result_sql))
{
if(sizeof($array1)<5)
{
if($this->guolv($tpl2result['title']))
array_push($array1,$tpl2result);
}
if(sizeof($array2)<5)
{
if(!$this->guolv($tpl2result['title']))
array_push($array2,$tpl2result);
}
if(sizeof($newtalk)==5&&sizeof($newvote)==5)
{
break;
exit;
}
}questions: 这种做法极大地浪费了资源,减慢速度,向大师取经。。
有 字段titleb表
也有字段title
a表中有1000条数据,b表中有10条数据要求:查询a表的title,若a.title 在 b.title中,则a.title存入 $array1中,如果sizeof($array1)>5 ,则不存。若 若a.title 不在 b.title中,则 则a.title存入 $array2中,如果sizeof($array2)>5 ,则不存。我的做法
$sql="select title from a"
........
while($tpl2result=mysql_fetch_array($result_sql))
{
if(sizeof($array1)<5)
{
if($this->guolv($tpl2result['title']))
array_push($array1,$tpl2result);
}
if(sizeof($array2)<5)
{
if(!$this->guolv($tpl2result['title']))
array_push($array2,$tpl2result);
}
if(sizeof($newtalk)==5&&sizeof($newvote)==5)
{
break;
exit;
}
}questions: 这种做法极大地浪费了资源,减慢速度,向大师取经。。
select * from a left join b on a.title = b.title
select * from a right join b on a.title = b.title这样就不需要sql语句来对比两张表了在数据库中,join的效率是很高的
长度sql len
或php判断下咯。
好像没错,不过貌似还是select title from a, 不管是不是left on,还是全部查询a,但我只要<=10条就行了,这个不知道了
貌似这样是限制在10条内了
看错题了,不敢回贴了。。 = =
楼上的不对,应该b LEFT JOIN a 重复的话就group by 这样就不会超10了
SELECT * FROM b LEFT JOIN a ON a.title = b.title你不是说在b中就存$arr1。不在b中就存$arr2么。那就要取所有数据了。
感觉怎样都要查询a吧。。