• 一、代码
  • 二、打印
    • 1、$oneTableSql 打印
    • 2、$joinTableSql 打印

一、代码

public function test() {$subSql = "select `user_id` from `score` where `type` = 1";//单表子查询$sql = "select * from `user` where `status` = 1";$oneTableSql = self::getInSubSql($sql, $subSql);echo $oneTableSql . '<br/>';//select * from `user` where id IN (select `user_id` from `score` where `type` = 1) AND `status` = 1//连表子查询$sql = "select * from `user` as `u` inner join `user_detail` as `ud` on `u`.`id` = `ud`.`user_id` where `u`.`status` = 1";$joinTableSql = self::getInSubSql($sql, $subSql, '`u`.`id`');echo $joinTableSql;//select * from `user` as `u` inner join `user_detail` as `ud` on `u`.`id` = `ud`.`user_id` where `u`.`id` IN (select `user_id` from `score` where `type` = 1) AND `u`.`status` = 1
}/*** IN 子查询 SQL 拼接* @param $sql 主sql* @param $subSql 子sql* @param string $field 主sql需要in的字段* @return string*/
function getInSubSql($sql, $subSql, $field = 'id') {if (empty($subSql)) {return $sql;}$interStr = 'WHERE'; //按照where字符串截取内容$index = strripos($sql, $interStr); //where所在的索引位置$length = mb_strlen($interStr); //where的长度$interBefore = substr($sql, 0, $index + $length); //where之前的内容(包含where)$whereSub = " {$field} IN ({$subSql}) AND "; //子查询条件$interLast = substr($sql, $index + $length);//where之后的内容(不包含where)$sql = $interBefore . $whereSub . $interLast; //拼接结果sql //子查询条件return $sql;
}

二、打印

1、$oneTableSql 打印

SELECT*
FROM`user`
WHEREid IN (SELECT`user_id`FROM`score`WHERE`type` = 1)
AND `status` = 1

2、$joinTableSql 打印

SELECT*
FROM`user` AS `u`
INNER JOIN `user_detail` AS `ud` ON `u`.`id` = `ud`.`user_id`
WHERE`u`.`id` IN (SELECT`user_id`FROM`score`WHERE`type` = 1)
AND `u`.`status` = 1

Mysql 单表、连表 in 子查询条件拼接相关推荐

  1. mysql 命令先执行子查询,MySQL必知必会--使用子查询

    子查询 版本要求 MySQL 4.1引入了对子查询的支持,所以要想使用 本章描述的SQL,必须使用MySQL 4.1或更高级的版本. SELECT语句 是SQL的查询.迄今为止我们所看到的所有 SEL ...

  2. SQL优化之一则MySQL中的DELETE、UPDATE 子查询的锁机制失效案例

    关注"数据和云",精彩不容错过 前言 开发与维护人员避免不了与 in/exists.not in/not exists 子查询打交道,接触过的人可能知道 in/exists.not ...

  3. Mysql进阶学习(六)子查询与分页查询

    Mysql进阶学习(六)子查询与分页查询 进阶7:子查询 1.含义: 2.分类: 3.where或having后面 3.1 特点: 3.2.标量子查询★ 案例1:谁的工资比 Abel 高? 案例2:返 ...

  4. MySQL 子查询以字段作为子查询条件

    SELECT *, tid AS aaa, ( SELECT uid FROM record WHERE tid = aaa AND win = 1 ORDER BY `value` DESC LIM ...

  5. mySQL学习记录(局域网连接/基础查询/条件查询/常见函数/窗口函数/表连接/子查询/插修删建表)

    一些基础概念 DB 数据库 存储数据的容器 DBMS 数据库管理系统 又称数据库软件.产品如mysql/oracle/db2/sqlserver SQL 结构化查询语言 是所有的DBMS都使用的一种D ...

  6. mysql join子查询_MySQL的多表join中,子查询伤不起啊!

    leader找到我,说下面的sql执行后cpu100%,但是这三张join的表数据量都在2W左右,不应该啊,是不是数据库服务器配置出了问题啊.sql如下: select a.excel_id, a.r ...

  7. Web程序员的Mysql进阶序三之sql多表数据删除、子查询、联合查询

    假设表结构如下: create table test(name varchar(10),sex varchar(10) ); create table test1(name varchar(10),s ...

  8. Ollivander's Inventory(连接查询、单表双实例、子查询)

    两张表 wands表:(id, code, coins_needed, power) wands_property表:(code, age, is_evil) 两张表通过code关联 查询要求: 1. ...

  9. java mysql单库多表_第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  10. mysql单源多表同步单库单表_MySQL主从复制单表或者多表

    MySQL数据库安装不过多的介绍了:必须保证2个数据库的版本一致. 主数据库:192.168.0.43 从数据库:192.168.0.53 修改43主数据 MySQL数据库安装不过多的介绍了:必须保证 ...

最新文章

  1. 解决getOutputStream() has already been called for this response[java io流]
  2. AngularJs $resource 高大上的数据交互
  3. 关于Kanas.Net框架的一些背景
  4. Redis在SSM项目中的简单使用
  5. ubuntu编译内核重启出现:gave up waiting for root device
  6. python学习(1)
  7. codevs 1004 四子连棋 BFS、hash判重
  8. C#中yield return用法
  9. IDEA 社区版不支持 Tomcat?一招完美解决!
  10. Google开放最大目标检测数据集,还要为它举办AI挑战赛
  11. java8 nullpoint_仅当在Java8中使用lambda时不为null时才过滤值
  12. hl3150cdn打印不了照片_如何在美国打印证件照片 (Passport Photos)?
  13. js监听滚动条滚动事件
  14. 猪年适合学什么编程语言?
  15. 简述神经元网络控制的作用和特点
  16. 超好用的私人珍藏网站,送给你了!
  17. zabbix监控windows主机网卡流量
  18. 【Deblurring by Realistic Blurring】阅读笔记
  19. TRACERT-NBTSTAT-AT-NETSH 命令及用法
  20. Avamar 10007报错解决

热门文章

  1. 1005 Spell It Right (20)(20 分)
  2. 凸优化系列二:确定步长一维搜索算法
  3. python中对象排序的两种方式
  4. 次导数 次梯度 小结
  5. python部署到服务器上解析不到模块_在服务器上部署kafka-python包
  6. layui 下拉框多选数据_智慧职教mooc2020大数据基础课后答案
  7. 华北五省计算机应用大赛2018,2019年华北五省(市、自治区)及港澳台大学生计算机应用大赛举行...
  8. RedisTemplate常用使用说明-opsForHash(3)
  9. 20190226杂七杂八
  10. requests模块介绍