#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')