TS2007FC音频放大器与MK24FN1M0VDC12微控制器协同设计解析
2026/7/8 10:30:55
SELECT*FROMcmf_fast_register rWHEREr.icp_status='0'ANDEXISTS(SELECT*FROMcmf_icp iWHERE(i.app_id=r.app_id))整条 SQL 分为两部分:
SELECT * FROM cmf_fast_register r WHERE ...EXISTS(...)括号里的一整段,就是子查询-- 这一段就是子查询SELECT*FROM`cmf_icp``i`WHERE(i.app_id=r.app_id)它不是普通子查询,是相关子查询:
子查询里用到了外层表的别名r(r.app_id),子查询不能独立执行,必须依赖外层每一行的数据。
执行逻辑拆解:
cmf_fast_register每一条记录 rapp_id丢进内层子查询cmf_icp匹配有没有i.app_id = 当前r.app_id的数据r.icp_status = 0双重筛选SELECT *其实没用,推荐改成SELECT 1,性能更好,逻辑不变:EXISTS(SELECT1FROM`cmf_icp``i`WHEREi.app_id=r.app_id)查询所有满足两个条件的cmf_fast_register数据:
icp_status = 0cmf_icp表中存在同 app_id 的关联记录()内部、嵌套在主查询里的查询语句;WHERE app_id IN (SELECT app_id FROM cmf_icp)。