请求:使用MysqliDb类封装构造指定子查询SQL语句
使用MysqliDb构造嵌套查询
对应你需要转换的SQL语句,用MysqliDb的子查询功能可以这么实现:
// 获取数据库实例 $db = getDbInstance(); // 构造子查询:SELECT * FROM users WHERE eventId=34 $subQuery = $db->subQuery(); $subQuery->where('eventId', 34); $subQuery->get('users'); // 外层查询:从子查询结果t2中筛选name或email包含alex的记录 $db->where('name', '%alex%', 'LIKE'); $db->orWhere('email', '%alex%', 'LIKE'); // 将子查询作为临时表t2执行查询 $result = $db->get($subQuery, null, 't2');
代码说明
- 先通过
subQuery()创建子查询对象,在子查询内设置eventId=34的条件并关联users表 - 外层查询用
where和orWhere设置模糊匹配规则,最后把构造好的子查询作为临时表t2传入get()方法执行 - 最终生成的SQL与你给出的目标语句完全一致:
SELECT * FROM (SELECT * FROM users WHERE eventId=34) as t2 WHERE name like "%alex%" or email like "%alex%"
内容的提问来源于stack exchange,提问作者vishal
相关产品推荐
相关产品推荐

