<rmcreative>

RSS

Все заметки с тегами «MySQL, SQL»

Можно уточнить:

  1. MySQL, удаление дубликатов

    10 марта 2010

    Существует множество универсальных решений данной задачи, но в MySQL всё решается ещё проще:

    ALTER IGNORE TABLE my_table ADD UNIQUE INDEX(a, b);
    2 комментария
  2. Множественный UPDATE в MySQL

    11 марта 2009

    Сразу предупреждаю, что эффективней использовать несколько «классических» запросов и, по возможности, транзакции (которые MyISAM не поддерживает). Так что… для общего развития:

    Способ №1

    UPDATE tbl_country SET price = CASE
    WHEN code = 1 THEN 123;
    WHEN code = 2 THEN 456;
    …
    END
    WHERE code IN (1,2,…)

    Способ №2

    INSERT INTO tbl_country
    (code, price)
    VALUES
    (1, 123),
    (2, 456),
    …
    ON DUPLICATE KEY UPDATE tbl_country.price = VALUES(price);
    25 комментариев
  3. MySQL: выбрать новости с определёнными id соблюдая порядок

    5 марта 2009

    Задача: выбрать новости с id = [2, 10, 3, 88, 23] соблюдая порядок.

    SELECT *
    FROM news
    WHERE id IN (2, 10, 3, 88, 23)
    ORDER BY FIELD (id, 2, 10, 3, 88, 23)
    9 комментариев
  4. toggle для mysql

    18 февраля 2009

    Что только не придумают иногда программисты… Задача — изменить значение cron в таблице ml на противоположное. Код немного не SQL т.к., скорее всего, писался под Drupal:

    UPDATE {ml} SET cron = (SELECT if(cron = 0,"1","0")) WHERE yid = %d

    Хотя на самом деле можно проще, быстрее и понятней:

    UPDATE {ml} SET cron = !cron WHERE yid = %d
    5 комментариев
  5. MySQL, сложение и NULL

    10 февраля 2009

    Вчера столкнулся с интересной штукой при работе с MySQL:

    SELECT NULL + 13

    даст нам NULL.

    Чтобы получилось ожидаемое (по крайней мере я почему-то ожидал) 13:

    SELECT IFNULL(NULL, 0) + 13

    IFNULL возвращает то, что передано вторым параметром, если первый равен NULL.

    Вместо NULL, как вы наверное догадались, было поле типа INT.

    14 комментариев
  6. MySQL: добавить если ещё нет

    19 декабря 2008

    Иногда требуется вставить запись в таблицу, если её там до сих пор нет. Можно сделать пару запросов: одним —проверить, другим — вставить, а можно и одним:

    INSERT IGNORE INTO `users`
    SET `login` = 'samdark', `password` = 'mypassword';

    Поле login должно быть уникальным.

    16 комментариев
  7. MySQL 5.1

    28 ноября 2008

    Зарелизилась новая версия MySQL за номером 5.1. Уже чувcтвуется положительное влияние Sun.

    Из вкусного:

    — Физическое разбиение таблиц на несколько файлов (подробнее).

    — Построчная репликация.

    — API для плагинов полнотекстового поиска.

    — Встроенный планировщик.

    — Системные таблички для логов.

    — mysql_upgrade (коррекция баз прошлых версий MySQL).

    — Кластер в комплекте.

    — Больше информации в метаданных.

    — XML, XPath.

    — Эмулятор нагрузок.

    What's New in MySQL 5.1

    Пробуем

    3 комментария
  8. Закрепить запись наверху при выборке

    22 октября 2008

    MySQL и PostgreSQL позволяют использовать результат логической операции при сортировке. Довольно удобно, когда нужно выдать какие-то записи первыми.

    select * from address
    order by (state = 'CA') desc, (state = 'CT') desc
    select * from posts
    order by (id=123), created_at
    5 комментариев
  9. Кэширование запросов в MySQL

    18 августа 2008

    О встроенном в MySQL механизме кэширования запросов.

    Читаем

    Комментировать
  10. MySql даты по-русски

    13 февраля 2008

    Заметка о том, как возвратить даты на русском.

    Читаем

    1 комментарий