我正在编写MySQL,以从数据库中的所有表中获取所有唯一ID。
数据库具有诸如record_20181201,record_20181202,...之类的表...
这些表是根据日期自动生成的(所有表都具有相同的架构,并且一个列名是visitorId)。
我进行的SQL查询就像
SELECT UNIQUE(visitorId) FROM databaseName.record_20181201;
使用此功能,我一次只能查询一个表。
是否可以查询数据库中的所有表并在那里选择所有唯一的visitorId?
答案 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