Consulta SQL relacional jerárquica

Como todos sabemos, debe haber un campo de ID principal en la tabla general de consulta jerárquica, que generalmente está representado por parent_id. Para facilitar la recuperación, la mayoría de las empresas configurarán un campo de ruta para registrar el estado del nivel actual. para demostrar el nivel actual La posición en la cadena jerárquica actual.
Cuando tenemos la información de la ruta actual, es relativamente sencillo obtener todas sus subordinadas, solo necesitamos hacer una coincidencia parcial del lado derecho, pero será más complicado cuando queramos obtener todas las cadenas superiores actuales, porque nuestra actual El nivel superior de la jerarquía puede tener múltiples subordinados, y somos solo una de las ramas actuales, por lo que será más problemático cuando queramos obtener una cadena, y es imposible para nosotros llamar repetidamente a la base de datos para obtener de acuerdo con el parent_id, que es un desperdicio de recursos, a continuación muestro cómo obtenerlo.

Toma una castaña:

Visualización de relaciones jerárquicas

# 获取当前组织所有子组织path,#{path}是咱们自己传入的参数,为了不影响整体性,用引号包了起来
SELECT path FROM organization WHERE path LIKE CONCAT('000001', '%') and deleted = 0;

# 获取当前组织所有上级组织链中的组织path,#{path}是咱们自己传入的参数,为了不影响整体性,用引号包了起来
SELECT path FROM organization WHERE '000001' LIKE CONCAT(path, '%') and deleted = 0;

Déjame mostrarte los resultados devueltos de las dos ejecuciones de SQL anteriores:

  • Después de ejecutar el primer SQL, se muestran los resultados
    mostrar subordinados
  • Después de que se complete la segunda ejecución de SQL, se mostrarán los resultados..
    mostrar superioridad
    Nota:
    Cabe señalar que si la consulta es superior o subordinada, se incluye a sí misma y necesita ser procesada por sí misma.

Supongo que te gusta

Origin blog.csdn.net/weixin_43650254/article/details/123790038
Recomendado
Clasificación