简体   繁体   English

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

[英]How to query all tables in a database

I'm writing MySQL to get all unique IDs from all tables in a database. 我正在编写MySQL,以从数据库中的所有表中获取所有唯一ID。

The database has tables like record_20181201, record_20181202, ... 该数据库具有诸如record_20181201,record_20181202等表...

The tables are automatically generated based on date (all tables have the same schema, and one column name is visitorId). 这些表是根据日期自动生成的(所有表都具有相同的架构,并且一个列名是visitorId)。

The SQL query I made is like, 我进行的SQL查询就像

SELECT UNIQUE(visitorId) FROM databaseName.record_20181201;

I can only query one table at a time using this.. 我每次只能使用此查询一个表。

Is there a way to query all tables in the database and select all unique visitorIds there? 有没有一种方法可以查询数据库中的所有表并在那里选择所有唯一的visitorId?

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

Try this!!!!!!Hope this helps.. 试试这个!!!!!!希望这会有所帮助..

You could generate a query string with UNION's from the INFORMATION_SCHEMA. 您可以从INFORMATION_SCHEMA生成带有UNION的查询字符串。

Then run that query, or put it in a view. 然后运行该查询,或将其放在视图中。

A UNION will return a unique combined result of the unioned queries. UNION将返回联合查询的唯一组合结果。
While a UNION ALL would just stick the results together. 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;

Run below query you will get a single query that will give unique visitorId from all table. 在查询下面运行,您将获得一个查询,该查询将为所有表提供唯一的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; 

you will get below query that will fetch unique visitorId from all tables. 您将获得以下查询,该查询将从所有表中获取唯一的visitorId。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM