sql语句 的优化php,SQL语句优化

在两张表里搜寻关键字,把符合关键字所对应的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%'";

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

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值