Выберите ОБА table_rows И column_name из information_schema

#mysql #sql

#mysql #sql

Вопрос:

Меня попросили СОЗДАТЬ ПРОЦЕДУРУ, которая перечисляет TABLE_NAME, TABLE_ROWS, COLUMN_NAME и DATA_TYPE из базы данных.

Проблема в том, что я могу выбрать только column_name, используя INFORMATION_SCHEMA.COLUMNS, и я могу выбрать table_rows, используя INFORMATION_SCHEMA.table. Я пытался объединить оба, но безуспешно.

Кроме того, мне нужно отфильтровать столбцы VARCHAR с CHARACTER_MAXIMUM_LENGTH > 5 , но если я перейду «ГДЕ CHARACTER_MAXIMUM_LENGTH > 5», он получит не только varchar, но и символьные data_types. Также.

Вот что у меня есть на данный момент

 SELECT c.table_name,  c.column_name, c.data_type, t.table_rows, CHARACTER_MAXIMUM_LENGTH
   FROM information_schema.columns c
   JOIN information_schema.tables t ON c.table_name = t.table_name
   WHERE t.table_schema = 'SAMPLE' AND CHARACTER_MAXIMUM_LENGTH > 5;
  

Я думаю, что у меня получилось правильное объединение для работы, но я все еще не уверен, как заставить это «CHARACTER_MAXIMUN_LENGTH> 5» фильтровать только типы данных varchar…

Есть мысли?

Ответ №1:

Исключите все типы данных, кроме varchar из вашего условия:

 AND (CHARACTER_MAXIMUM_LENGTH > 5 OR DATA_TYPE <> 'varchar')