DML инструкции в клиенте MySQL.exe UPDATE и DELETE

UPDATE (редактирование записей)

Синтаксис оператора UPDATE на сайте mysql.ru выглядит таким образом

update sales set salesamount=100000 where primary_id=1

1

Теперь попробуем увеличить продажи всех продавцов в 3 раза!

2
Теперь увеличим продажи Петрову в 2 раза!
3
Как видно из таблицы – Петров стал продавать в 2 раза больше!

Теперь попробуем обновить несколько записей. Антонова сделали Антоновой и установили продажи в 100 000;
4
DELETE (удаление записей)

Простейшая команда удаления будет выглядеть таким образом…

5

Заметьте, мы удалили 12-й номер и перенумерации не произошло, чтобы упорядочить Primary_id, нужно сделать Update…

6

 

В книге Д. Осипова “Базы данных и Delphi” есть классный пример на удаление дублирующих записей. Для начала воссоздадим парочку дублирующих записей…

7

Итак, у нас 2 Авакова и 2 Петрова – целостность нарушена. Вот как можно удалить дублирующие записи. В книге Д. Осипова написана такая инструкция..

Delete from Sales where Primary_id not in (Select min(Primary_id) from sales group by salesman)

Но в MySQL такой пример на сработал. Как выяснилось потому что делать выборку и обновлять / удалять из одной и той же таблицы нельзя. Тогда я обратился к поиску и нашёл вот что

Универсальный способ, рекомендуемый в документации, – использовать вложенный подзапрос.

DELETE FROM t WHERE col = (SELECT * FROM (SELECTFROM t…) AS t1);
UPDATE t … WHERE col = (SELECT * FROM (SELECTFROM t…) AS t1);
{INSERT|REPLACE} INTO t col = (SELECT * FROM (SELECTFROM t…) AS t1);

Используя этот совет и модифицируя запрос Д. Осипова, в MySQL удаление дублирующих строк у меня получилось таким образом…

delete from sales where primary_id not in (select*(select min(Primary_id) from sales group by salesman) as sales1);

 

This entry was posted in MySQL, SQL инструкции, Без рубрики. Bookmark the permalink.

Leave a Reply