首页 > 后端开发 > php教程 > SQL语句优化

SQL语句优化

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-20 12:27:27
原创
1019 人浏览过

在两张表里搜寻关键字,把符合关键字所对应的id查询出来

$keyword = "XX";       //关键字$sql1= "select id from table1 where title like "%$keyword%";$result1 = $this->db->getAll($sql1);     //sql执行后返回的id数组foreach($result1a as $k=>$v){                 $result1[$k]['flat'] = 1;           //给一个标识, 让我知道这是从table1里查出来的}$sql2= "select id from table2 where title like "%$keyword%";$result2 = $this->db->getAll($sql2);foreach($result2a as $k=>$v){                $result2[$k]['flat'] = 2;} $result = array_merge_recursive($result1, $result2);
登录后复制


回复讨论(解决方案)

遇到什么问题??

1、你的$result1a,$result1b都是空,循环没什么意义,估计打错了
2、循环体貌似也没什么用

请把问题描述清楚

遇到什么问题??



1、你的$result1a,$result1b都是空,循环没什么意义,估计打错了
2、循环体貌似也没什么用

请把问题描述清楚



result1a ->result1,
result2a ->result2,

将sql1 和 sql2 合成一句sql 分别给与标志
相当于执行sql返回下面类型
array(
array("id" => 4,"flat" => 1 ),
array( "id" => 7, "flat" => 1),
array( "id" => 4,"flat" => 2)
);

$keyword = "XX";       //关键字 $sql1= "select id from table1 where title like "%$keyword%";$result1 = $this->db->getAll($sql1);     //sql执行后返回的id数组foreach($result1 as $k=>$v){                 $result1[$k]['flat'] = 1;           //给一个标识, 让我知道这是从table1里查出来的} $sql2= "select id from table2 where title like "%$keyword%";$result2 = $this->db->getAll($sql2);foreach($result2 as $k=>$v){                $result2[$k]['flat'] = 2;}  $result = array_merge_recursive($result1, $result2);
登录后复制

$sql1= "select id,1 as flat from table1 where title like '%$keyword%' union all select id,2 as flat from table2 where title like '%$keyword%'";
登录后复制


这样执行一次查询就行了,下面的合并数组都可以免了。

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
打印sql语句
来自于 1970-01-01 08:00:00
0
0
0
sql优化or
来自于 1970-01-01 08:00:00
0
0
0
mysql - 求SQL语句
来自于 1970-01-01 08:00:00
0
0
0
javascript - python或JS对SQL语句美化和压缩
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板