![](/img/trans.png)
[英]How to query all columns of all tables of a database with MySQL/MariaDB?
[英]How to query all tables in a database
我正在編寫MySQL,以從數據庫中的所有表中獲取所有唯一ID。
該數據庫具有諸如record_20181201,record_20181202等表...
這些表是根據日期自動生成的(所有表都具有相同的架構,並且一個列名是visitorId)。
我進行的SQL查詢就像
SELECT UNIQUE(visitorId) FROM databaseName.record_20181201;
我每次只能使用此查詢一個表。
有沒有一種方法可以查詢數據庫中的所有表並在那里選擇所有唯一的visitorId?
SELECT DISTINCT VisitorID FROM DBName.Table1
UNION
SELECT DISTINCT VisitorID FROM DBName.Table2
UNION
SELECT DISTINCT VisitorID FROM DBName.Table3
試試這個!!!!!!希望這會有所幫助..
您可以從INFORMATION_SCHEMA生成帶有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;
在查詢下面運行,您將獲得一個查詢,該查詢將為所有表提供唯一的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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.