Изучаем sql


Упорядоченные обновления и удаления



Pdf көрінісі
бет235/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   231   232   233   234   235   236   237   238   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

Упорядоченные обновления и удаления
Ранее здесь было показано, как с помощью сочетания блоков 
limit
и
order
by
можно писать запросы, формирующие ранжированную вы
борку (например, три лучших сотрудника по количеству открытых
счетов). MySQL тоже позволяет использовать блоки 
limit
и 
order
by
в выражениях 
update
и 
delete
, обеспечивая таким образом возмож
ность изменять или удалять определенные строки таблицы на основа
нии их ранга. Предположим, например, что требуется удалить строки
таблицы, используемой для отслеживания регистраций пользовате
лей в онлайновой банковской системе. Вот таблица, отслеживающая
ID клиента и дату/время регистрации:
CREATE TABLE login_history
(cust_id INTEGER UNSIGNED NOT NULL,
login_date DATETIME,
CONSTRAINT pk_login_history PRIMARY KEY (cust_id, login_date)
);
Следующее выражение заполняет таблицу 
login_history
некоторыми
данными путем формирования перекрестного соединения между таб
лицами 
account
и 
customer
и формирования дат регистрации на основа
нии значений столбца 
open_date
таблицы 
account
:
mysql> 
INSERT INTO login_history (cust_id, login_date)
> SELECT c.cust_id,
> ADDDATE(a.open_date, INTERVAL a.account_id * c.cust_id HOUR)
> FROM customer c CROSS JOIN account a;
Query OK, 312 rows affected (0.03 sec)
Records: 312 Duplicates: 0 Warnings: 0
Теперь таблица заполнена 312 строками относительно случайных дан
ных. Ваша задача – раз в месяц просмотреть данные таблицы 
login_his
tory
, составить для руководства отчет о тех, кто использует онлайновую
банковскую систему, и затем удалить все записи кроме 50 последних.
Один из возможных подходов – написать запрос с использованием бло
ков 
order
by
и 
limit
для поиска 50 самых свежих регистраций:
mysql> 


Достарыңызбен бөлісу:
1   ...   231   232   233   234   235   236   237   238   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет