Приветствую вас Читатели. В этой статье я хотел собрать некоторые полезные функции и приёмы для работы с базой данных MySQL.
-
сортировка строкового поля (varchar,char) как числового:
Допустим у нас есть табличка, с полем `sku` типа varchar, в котором хранятся строки начинающиеся с цифр (различные коды товаров или счетов фактур).
CREATE TABLE IF NOT EXISTS `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sku` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ID text 1 123 2 11231 3 1125 4 1123b 5 1123a делаем обычную сортировку по возрастанию
SELECT * FROM `test` ORDER BY `sku` ASC
и получаем вот что, совсем не то что ожидалось
ID text 2 11231 4 1123b 5 1125a 3 1125 1 123 так получается, потому что MySQL рассматривает числа как строки и сортирует их по кодам символов. Чтобы избежать этого нужно добавить
ORDER BY cast(«поле для сортировки» AS signed),
то есть в нашем случаеSELECT * FROM `test` ORdER BY cast(`sku` AS signed)
после выполнения запроса получаем необходимую сортировку
ID text 1 123 4 1123b 5 1124a 3 1125 2 11231 -
получение случайной записи из таблицы
Эта функция полезна для показа скажем случайного отзыва клиента или случайного поста.
Для получения такой записи, мы сначала сортируем таблицу в случайном порядке с использованием функции RAND(),затем берём первую запись, запрос выглядит прмерно так:SELECT * FROM `table` ORDER BY RAND() LIMIT 1
-
убрать дубликаты строк по нескольким поля
Чтобы убрать дублирующиеся записи из таблицы по нескольким полям, можно использовать оператор GROUP BY а необходимые поля соединить знаком «+» ( `имя_поля1`+`имя_поля2`+…):
SELECT * FROM TABLE WHERE `sender`='%d' OR `addressee`='%d' GROUP BY `sender`+`addressee`
Классная статья, пользуюсь случаем и хочу пропиарить свой первый проект, https://vk.com/flokirovanie_na_zakaz_kharkov — https://vk.com/flokirovanie_na_zakaz_kharkov Буду рад посещению в группу
PHP предоставляет еще несколько полезных функций, которые позволяют узнать информацию о результах SQL-запросов.
PHP предоставляет еще несколько полезных функций, которые позволяют узнать информацию о результах SQL-запросов.