当写sql语句时,某些条件不能直接获取,则需要通过查询获取子集所需要的条件;以下是获取获取条件时,几个不同的使用场景。
1. 作为字段使用
使用范围: select 语句下
example: 获取层次级数方便后续使用
( SELECT (LENGTH(tree_path) - LENGTH( REPLACE(tree_path,',','') ) ) ) as level
2. 作为集合使用
使用范围:where 后
select * from A where name in (select name from B)
3. 作为表使用
当以上条件不适用时,可以构造查询临时表,来满足自己所需要的操作 比如(1. 嵌套查询 2. 连接查询)
INNER JOIN ( SELECT A.`code`, A.`name`, B.`code` as child_code FROM `areas` as A LEFT JOIN areas AS B ON A.`code` = B.parent_code UNION ALL SELECT C.code, C.name, C.code as child_code FROM `areas` C ) k ON p.code = k.child_code