MySQL – полезные запросы на все случаи!
Существует масса MySQL-запросов, о которых мало кто знает. Эти запросы могут очень облегчить жизнь разработчикам. Вообще, обычно, не хватает времени на прочтение справочной документации...
Существует масса MySQL-запросов, о которых мало кто знает. Эти запросы могут очень облегчить жизнь разработчикам. Вообще, обычно, не хватает времени на прочтение справочной документации, а ведь разработчики очень много времени отводят на ее написание, приводят там примеры и т.д. Очень часто, при оптимизации очередного проекта или доработки нужного функционала сталкиваешься с такими запросами, которые, наверное, были написаны “программистами”, которые впервые вообще видели язык запросов.
Получение записей с повторяющимися значениями поля и количества повторений:
SELECT `column_name`, COUNT(`column_name`) AS `count` FROM `table_name` GROUP BY `column_name` HAVING `count` > 1;
Данный запрос сгруппирует все записи по `column_name` с максимальной датой для текущего значения:
SELECT * FROM `table_name` AS `t1` WHERE `column_date` = (SELECT MAX(`column_date`) FROM `table_name` AS `t2` WHERE `t1`.`column_name` = `t2`.`column_name`);
Выбор записей с повторяющимся значением поля N раз. Замените в запросе N на конкретное число:
SELECT * FROM `table_name` GROUP BY `column_name` HAVING COUNT(*) = N;
Получение размера баз данных MySQL:
SELECT `table_schema` AS `Db name`, ROUND(SUM(`data_length` + `index_length`) / 1024 / 1024, 3) AS 'Db size(MB)' FROM `information_schema`.`tables` GROUP BY `table_schema`;
Определение количества слов в столбце:
SELECT LENGTH(`column_name`) - LENGTH(REPLACE(`column_name`, ' ', '')) + 1 AS`words_count` FROM `table_name`;
Событие, которое срабатывает 1 раз в час и удаляет записи из таблицы:
SET GLOBAL `event_scheduler` = ON; CREATE EVENT `hourly_event` ON SCHEDULE EVERY 1 HOUR DO DELETE FROM `table_name`;
Получение название поля, которое является первичным ключом в таблице:
SELECT `COLUMN_NAME` FROM `information_schema`.`COLUMNS` WHERE `TABLE_NAME` = 'table_name' AND `COLUMN_KEY` = 'PRI';
Выборка информации о внешних ключах таблицы:
SELECT `COLUMN_NAME`, `CONSTRAINT_NAME`, `REFERENCED_TABLE_NAME`, `REFERENCED_COLUMN_NAME` FROM `information_schema`.`KEY_COLUMN_USAGE` WHERE `TABLE_NAME` = 'table_name' AND `CONSTRAINT_NAME` <> 'PRIMARY';