MySQL поиск и удаление дубликатов в таблице

25 июня 2014 2 комментария

Как найти и удалить дубликаты в таблице MySQL? - оказывается это довольно частый вопрос, возникающий на практике, особенно когда надо установить UNIQUE constraint.

Задачу поиска дубликатов в SQL-таблице всегда можно решить таким простым запросом:
SELECT login, COUNT(login) AS cnt FROM users GROUP BY login HAVING ( COUNT(login)>1 );
(далее…)

Как конвертировать таблицу MySQL в кодировку UTF8

Как всегда все гениальное просто, но в новой версии и не всем известно. Всего одна команда для MySQL 5 версии

MySQL max_allowed_packet меняем максимальный размер пакета

13 февраля 2012 6 комментариев
Если при добавлении записей в базу данных MySQL возникает проблема связанная с max_allowed_packet, то скорее всего тот блок данных превышает максимальный допустимый размер. Есть два способа изменить это значение:

1. Меняем max_allowed_packet в my.cnf

обычно в /etv/my.cnf добавляем строчку
max_allowed_packet = 16M

 

2. Запуск MySQL с ключом --max_allowed_packet

Это до первой перезагрузки
mysqld --max_allowed_packet=16M
Categories: Linux, PHP, SQL, Windows Tags: ,

Сортировка по месяцам, а не по дате

25 ноября 2011 1 комментарий
Задача: Есть таблица, со столбцом формата DATETIME, TIMESHTAMP или DATE. По умолчанию сортировка производится по дате. Т.е. год, месяц, дань, час, минута, секунда. Но, надо отсортировать значения например по месяцам. Как? Ответ: Как всегда все гениальное просто - сортировать можно не только по столбцам, но и по результатам обработки. В данном случае можно использовать функцию DATE_FORMAT
ORDER BY DATE_FORMAT(birthday,'%m%d') ASC
так же подойдут функции DAY, MONTH, YEAR
ORDER BY DAY(birthday) ASC, MONTH(birthday) ASC, YEAR(birthday) ASC
Примечание: Если использовать в функции DATE_FORMAT дополнительные символы для разделения значений:
ORDER BY DATE_FORMAT(birthday,'%m-%d') ASC
то сортировка будет производиться не правильно по строковому, а не числовому значению, что не всегда то, что нужно.