Трюки в SQL
Данный пост пишу исключительно для себя, что бы не забыть то, что когда-то уже придумал. Ну или откуда-нибудь позаимствовал.
Трюк номер 1 – как выбрать записи по порядку который мы сами задаем. Т.е. если строки вставлены с идентификаторами “1 2 3”, то как можно выбрать их в порядке “3 1 2”. Все очень просто.
mysql> create database test;
Query OK, 1 row affected (0.02 sec)
mysql> use test;
Database changed
mysql> create table xxx(
-> id bigint unsigned not null auto_increment primary key,
-> name varchar(100) not null);
Query OK, 0 rows affected (0.03 sec)
mysql> insert into xxx (name) VALUES ('Masha');
Query OK, 1 row affected (0.02 sec)
mysql> insert into xxx (name) VALUES ('Pasha');
Query OK, 1 row affected (0.00 sec)
mysql> insert into xxx (name) VALUES ('Dimon');
Query OK, 1 row affected (0.00 sec)
mysql> select * from xxx;
+----+-------+
| id | name |
+----+-------+
| 1 | Masha |
| 2 | Pasha |
| 3 | Dimon |
+----+-------+
3 rows in set (0.00 sec)
mysql> select * from xxx order by locate(concat('.',id,'.'),'.3.1.2.');
+----+-------+
| id | name |
+----+-------+
| 3 | Dimon |
| 1 | Masha |
| 2 | Pasha |
+----+-------+
3 rows in set (0.02 sec)
Все дело в этой LOCATE. Она выдает позицию (т.е. число, которое можно использовать как порядок в сортировке) вхождения подстроки .ЧИСЛО. в большой строке. Точки по бокам большой строки добавлены для того, что бы и крайние числа тоже попадали в результат.
Трюк номер 2 – как одним запросом в поле таблицы заменить определенную подстроку.
Еще проще
UPDATE таблица SET поле = REPLACE(поле, 'что ищем', 'на что меняем')
Кто знает еще хитрости – делитесь.
Комментарии [4]
Июл 31, 14:35 , max
трюк 1 – ничего так, пойдет :)
второй даже и не трюк вовсе, а стандартный запрос. Вот вывести результат в строку через запятую, думаю можно за трюк посчитать :) хотя как сделать это для мускла без временной таблицы я не знаю :(.-
кегль кода мелковат… Трудно читать…
-
Интересная публикация.
У самого часто возникала мысль сделать сайт, на котором публиковать простые примеры кодирования.
Причем сделать базу знаний
по SQL, PHP, C++, Java, Erlang, 1C да и html -
второй трюк понравился ;)
2008-11-21 1:19 am , Оставьте свой отзыв