UPDATE (редактирование записей)
Синтаксис оператора UPDATE на сайте mysql.ru выглядит таким образом
1 2 3 4 5 6 |
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2, ...] [WHERE where_definition] [LIMIT #] Рассмотрим всё на примерах. Откроем клиент MYSQL.EXE и попробуем выполнить инструкцию редактирования для одной записи... |
Теперь увеличим продажи Петрову в 2 раза!
Как видно из таблицы – Петров стал продавать в 2 раза больше!
Теперь попробуем обновить несколько записей. Антонова сделали Антоновой и установили продажи в 100 000;
DELETE (удаление записей)
Простейшая команда удаления будет выглядеть таким образом…
Заметьте, мы удалили 12-й номер и перенумерации не произошло, чтобы упорядочить Primary_id, нужно сделать Update…
В книге Д. Осипова “Базы данных и Delphi” есть классный пример на удаление дублирующих записей. Для начала воссоздадим парочку дублирующих записей…
Итак, у нас 2 Авакова и 2 Петрова – целостность нарушена. Вот как можно удалить дублирующие записи. В книге Д. Осипова написана такая инструкция..
Delete from Sales where Primary_id not in (Select min(Primary_id) from sales group by salesman)
Но в MySQL такой пример на сработал. Как выяснилось потому что делать выборку и обновлять / удалять из одной и той же таблицы нельзя. Тогда я обратился к поиску и нашёл вот что…
Универсальный способ, рекомендуемый в документации, – использовать вложенный подзапрос.
UPDATE t … WHERE col = (SELECT * FROM (SELECT … FROM t…) AS t1);
{INSERT|REPLACE} INTO t col = (SELECT * FROM (SELECT … FROM t…) AS t1);
Используя этот совет и модифицируя запрос Д. Осипова, в MySQL удаление дублирующих строк у меня получилось таким образом…
delete from sales where primary_id not in (select*(select min(Primary_id) from sales group by salesman) as sales1);