Arris
@Arris
Сапиенсы учатся, играя.

MySQL: information_scheme — как вывести NULL для несуществующих таблиц?

Встала задачка проверять по information_scheme статусы таблиц. Делаю вот так:
SELECT table_name, table_rows, data_length, update_time FROM information_schema.tables
WHERE table_name IN
('table_1' , 'table_2' , 'table_3' , 'table_4')

Все прекрасно работает, но если table_N не существует - оно и не выводится. В попытках получить результат вида:

+------------------+------------+-------------+---------------------+
| table_name       | table_rows | data_length | update_time         |
+---------------- +------------+-------------+---------------------+
| table_1          |    7041979 |  5497161940 | 2016-04-07 02:53:41 |
| table_3          |        NULL |       NULL | NULL |

Для несуществующей таблицы table_3 долго и вдумчиво курил мануалы, закурил всю квартиру, написал головоломный запрос... но задачу так и не решил :(

Чую, что она решается как-то очень просто и элегантно, но как?

Помогите пожалуйста.
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
Arris
@Arris Автор вопроса
Сапиенсы учатся, играя.
На Stackoverflow предложили решение. Недостаточно корректное, но хоть какое-то:

SELECT tn.table_name, t.table_rows, t.data_length, t.update_time
FROM (SELECT 'table_1' as table_name UNION ALL
      SELECT 'table_2' as table_name UNION ALL
      SELECT 'table_3' as table_name UNION ALL
      SELECT 'table_4' as table_name
     ) tn LEFT JOIN
     information_schema.tables t
     ON tn.table_name = t.table_name;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы