如何查询数据库中的所有表

23c0lvtd  于 2021-06-15  发布在  Mysql
关注(0)|答案(3)|浏览(305)

我编写mysql是为了从数据库中的所有表中获取所有唯一的id。
数据库中有像record\u 20181201,record\u 20181202。。。
这些表是根据日期自动生成的(所有表都具有相同的架构,其中一个列名是visitorid)。
我的sql查询是这样的,

SELECT UNIQUE(visitorId) FROM databaseName.record_20181201;

我一次只能查询一个表。。
有没有办法查询数据库中的所有表并选择其中所有唯一的visitorid?

inkz8wg9

inkz8wg91#

运行下面的查询您将得到一个查询,该查询将从所有表中提供唯一的visitorid。

SELECT 
    CONCAT('SELECT DISTINCT visitorId FROM (',
            REPLACE(query_string, ',', ' UNION '),
            ') union_table') AS final_query
FROM
    (SELECT 
        CONCAT(GROUP_CONCAT('SELECT visitorId FROM ', table_name)) AS query_string
    FROM
        information_schema.tables
    WHERE
        table_name LIKE 'record_%') table_a;

下面的查询将从所有表中获取唯一的visitorid。

SELECT DISTINCT
    visitorId
FROM
    (
    SELECT visitorId FROM record_20181201 
        UNION 
    SELECT visitorId FROM record_20181202 
        UNION 
    SELECT visitorId FROM record_20181203
    ) union_table
wf82jlnq

wf82jlnq2#

SELECT DISTINCT VisitorID FROM DBName.Table1
 UNION 
SELECT DISTINCT VisitorID FROM DBName.Table2 
 UNION 
SELECT DISTINCT VisitorID FROM DBName.Table3

试试这个!!!!!!希望这有帮助。。

68bkxrlz

68bkxrlz3#

您可以从信息架构生成一个带有union的查询字符串。
然后运行该查询,或将其放入视图中。
UNION 将返回联合查询的唯一组合结果。
UNION ALL 把结果粘在一起。

SELECT GROUP_CONCAT(Qry ORDER BY TblSchema, TblName SEPARATOR ' UNION ')
FROM
(
  SELECT 
   TABLE_SCHEMA as TblSchema,
   TABLE_NAME as TblName,
   CONCAT('select visitorId from ',TABLE_SCHEMA,'.',TABLE_NAME,'\r\n') as Qry
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_NAME LIKE 'record_201812%' 
    AND COLUMN_NAME = 'visitorId'
) Q;

相关问题