Вы должны будете использовать динамический SQL для построения запроса (или запросов), чтобы получить результаты из этих таблиц.То есть вы получаете таблицы из запроса information_schema в виде строк, а затем интерполируете эти строки в последующий запрос.
Что-то, связанное с объединением отдельных запросов для всех таблиц:
SELECT ...
FROM (SELECT * FROM `data-2010-10-10`
UNION ALL SELECT * FROM `data-2010-10-11`
UNION ALL SELECT * FROM `data-2010-10-12`
UNION ALL SELECT * FROM `data-2010-10-13`) AS u
Но я ставлю под сомнение ваш дизайн создания отдельной таблицы в день.Поначалу это кажется удобным, но таблицы распространяются из-под контроля, и у вас возникают трудности с выполнением обычных запросов, например, с трудностями, с которыми вы сейчас сталкиваетесь.Это антипаттерн Я называю Метаданные Триблс .
Вероятно, ваши данные могут храниться в одной таблице со столбцом даты, чтобы вы могли различать данные за разные дни.Вероятно, вам просто нужно создать индексы, чтобы помочь запросам, которые вам нужно выполнить для общих данных.
Ваш комментарий:
Вы не можете сделать имена таблиц динамическими в SQLзапрос (включая определение представления).Вы можете интерполировать имена таблиц в строку, а затем подготовить строку как запрос SQL.
Вы можете построить строку с помощью функции CONCAT()
, а затем использовать PREPARE
и EXECUTE
для запуска строки в качестве запроса.Но поскольку в клиенте mysql нет структур циклов, вам придется написать хранимую процедуру, чтобы сделать это, если вы не можете написать скрипт на Python или PHP или на каком-либо другом языке хоста.