Я не программист, но периодически приходится писать мелкие программки для собственных нужд. И иногда приходится работать с MySQL, который постоянно удивляет меня, не специалиста по SQL, всякими прикольными запросиками )
Вот последний пример — нужно тупо считать количество открытий различных страниц сайта. Создал табличку с двумя полями — идентификатор страницы и счётчик. Страниц много и они могут добавляться поэтому хотелось бы, чтобы строки с нужным идентификатором автоматически создавались при необходимости, т.е. чтобы не нужно было проверять наличие строки и, в зависимости от результата, либо делать инсерт, либо апдейт. Ну и чтобы счётчик накручивался сразу и без лишних действий, таких как — прочитать предыдущее значение, прибавить к нему 1 и записать новое значение.
Каким-то местом я почувствовал, что такое должно быть в MySQL, ну и действительно — всё это делается одним запросом:
insert into pages_views values (10,1) ON DUPLICATE KEY UPDATE shows=shows+1;
— вставить строку со значениями 10 (идентификатор страницы) и 1 (начальное значение счётчика), а если строка с таким уникальным ключом уже есть, то увеличить значение поля shows на 1.
В моём случае уникальным ключом является поле с идентификатором страницы.