es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilice “mostrar tablas” como una tabla derivada.

Estoy intentando combinar “show tables like” como una tabla derivada en un join.

Esto funciona:

  show tables like 'table_name_pattern_%'

Sin embargo, no puedo entender cómo hacer que esto funcione:

  select i.* from table i
  left join (
      show tables like 'table_name_pattern_%'
  ) a on i.id=mid(a.`columnname_from_show_tables`, 20)

¿Alguna idea o es “show tables” una declaración especial que no se puede unir?

Estoy en MySQL 5.7.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    No es posible unir directamente una instrucción show tables ya que no es una tabla o vista. Sin embargo, una solución alternativa es utilizar una subconsulta para obtener la lista de tablas que coinciden con el patrón y luego unirla con su tabla.

    Aquí hay un ejemplo de consulta:

    SELECT t.*, a.columnname_from_show_tables
    FROM table_name t
    LEFT JOIN (
      SELECT table_name, columnname_from_show_tables
      FROM (
        SELECT table_name, SUBSTRING(table_name, 20) AS columnname_from_show_tables
        FROM information_schema.tables
        WHERE TABLE_SCHEMA = 'tu_nombre_de_base_de_datos'
          AND table_name LIKE 'patron_de_nombre_de_tabla_%'
      ) AS subquery
    ) AS a ON t.id = a.columnname_from_show_tables;
    

    En esta consulta, primero utilizamos una subconsulta para obtener la lista de tablas que coinciden con el patrón utilizando la vista information_schema.tables. Luego seleccionamos las columnas relevantes de la subconsulta y las utilizamos en la condición de unión con nuestra tabla principal.

    Tenga en cuenta que deberá reemplazar tu_nombre_de_base_de_datos y patron_de_nombre_de_tabla_% con su nombre real de base de datos y patrón de tabla, respectivamente. Además, deberá ajustar la función de subcadena para extraer la parte relevante del nombre de la tabla en la que necesita unirse.

Comments are closed.