使用 "show tables" 作为派生的 table

Use "show tables" as a derived table

我正在尝试将“show tables like”作为派生的 table 合并到联接中。

这个有效:

  show tables like 'table_name_pattern_%'

但是我不知道如何使它工作

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

有什么想法,或者显示table是一个无法加入的特殊声明?

我在 MySQL 5.7

你可以使用这个:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='dbName'

然后:

 select i.* from table i
  left join (
 SELECT TABLE_NAME 
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA='dbName'
      AND TABLE_NAME like 'table_name_pattern_%'
  ) a on i.id=mid(a.`TABLE_NAME`, 20)