簡體   English   中英

如何查詢數據庫中的所有表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM