Как найти и удалить дубликаты в таблице MySQL? - оказывается это довольно частый вопрос, возникающий на практике, особенно когда надо установить UNIQUE constraint.
Задачу поиска дубликатов в SQL-таблице всегда можно решить таким простым запросом:
SELECT login, COUNT(login) AS cnt
FROM users GROUP BY login
HAVING ( COUNT(login)>1 );
(далее…)
Как всегда все гениальное просто, но в новой версии и не всем известно.
Всего одна команда для MySQL 5 версии
|
alter table TABLE_NAME convert to character set utf8; |
Если при добавлении записей в базу данных 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
Задача: Есть таблица, со столбцом формата
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
то сортировка будет производиться
не правильно по строковому, а не числовому значению, что не всегда то, что нужно.
Свежие комментарии