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

时间:2018-12-20 10:40:16

标签: mysql sql database datatable

我正在编写MySQL,以从数据库中的所有表中获取所有唯一ID。

数据库具有诸如record_20181201,record_20181202,...之类的表...

这些表是根据日期自动生成的(所有表都具有相同的架构,并且一个列名是visitorId)。

我进行的SQL查询就像

SELECT UNIQUE(visitorId) FROM databaseName.record_20181201;

使用此功能,我一次只能查询一个表。

是否可以查询数据库中的所有表并在那里选择所有唯一的visitorId?

3 个答案:

答案 0 :(得分:0)

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

尝试一下!!!!!希望有帮助。

答案 1 :(得分:0)

您可以从INFORMATION_SCHEMA生成带有UNION的查询字符串。

然后运行该查询,或将其放在视图中。

const _ = require('lodash'); let item = { a: {b:'AA'}}; _.get(item, 'a.b'); 将返回联合查询的唯一组合结果。
UNION会将结果粘贴在一起。

UNION ALL

答案 2 :(得分:0)

在查询下面运行,您将获得一个查询,该查询将在所有表中提供唯一的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