最近使用到了递归查询,用于地区查询,即传递一个地区的id,使用一条sql语句将传递的这个地区下面所有子地区以及子子地区全部查询出来,这个地区递归查询功能很多地方都会用到,这里记录下来,方便自己和朋友们使用;
sql如下:
WITH temp (areaid) AS (
SELECT
areaid
FROM
area
WHERE
areaid =340000
UNION ALL
SELECT
a.areaid
FROM
area a
INNER JOIN temp ON a.parentid = temp.areaid
) SELECT
*
FROM
temp
该查询语句的关键字为with as,union all.
该查询语句由两条select查询语句构成,第一条select语句只会执行一次,查出我们传进来的地区id参数对应的地区数据,将查询出来的结果集表赋到temp表中(temp表的表名可以自定义,temp表后面括号中的字段要和查出来的结果集中的字段相对应,并且括号里定义的字段,决定temp表中有哪些字段),然后执行第二条select语句,即
SELECT
a.areaid
FROM
area a
INNER JOIN temp ON a.parentid = temp.areaid