Как запросить все таблицы в базе данных - PullRequest
0 голосов
/ 20 декабря 2018

Я пишу MySQL, чтобы получить все уникальные идентификаторы из всех таблиц в базе данных.

В базе данных есть таблицы, такие как record_20181201, record_20181202, ...

Таблицы генерируются автоматически на основена дату (все таблицы имеют одинаковую схему, а имя одного столбца - visitorId).

Выполненный мной SQL-запрос выглядит так:

SELECT UNIQUE(visitorId) FROM databaseName.record_20181201;

Я могу запрашивать только одну таблицу за один разиспользуя это ..

Есть ли способ запросить все таблицы в базе данных и выбрать все уникальные идентификаторы посетителей?

Ответы [ 3 ]

0 голосов
/ 20 декабря 2018

Вы можете сгенерировать строку запроса с UNION из INFORMATION_SCHEMA.

Затем выполнить этот запрос или поместить его в представление.

A 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;
0 голосов
/ 20 декабря 2018

Запустите запрос ниже, вы получите один запрос, который даст уникальный 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
0 голосов
/ 20 декабря 2018
SELECT DISTINCT VisitorID FROM DBName.Table1
 UNION 
SELECT DISTINCT VisitorID FROM DBName.Table2 
 UNION 
SELECT DISTINCT VisitorID FROM DBName.Table3

Попробуйте это !!!!!! Надеюсь, это поможет ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...