Напомним, что выведенное сообщение относится непосредственно к внешнему за-
просу, в котором выполняется операция INSERT, добавляющая строку в журнальную
таблицу.
Посмотрим историю изменений строки с описанием самолета Bombardier CRJ-200:
SELECT * FROM aircrafts_log
WHERE model ~ '^Bom' ORDER BY when_add;
--[ RECORD 1 ]-+---------------------------
aircraft_code | CR2
model
| Bombardier CRJ-200
range
| 2700
when_add
| 2017-02-05 00:27:38.591958
operation
| INSERT
--[ RECORD 2 ]-+---------------------------
aircraft_code | CR2
model
| Bombardier CRJ-200
range
| 3240
when_add
| 2017-02-05 00:27:56.688933
operation
| UPDATE
--[ RECORD 3 ]-+---------------------------
aircraft_code | CR2
model
| Bombardier CRJ-200
range
| 3240
when_add
| 2017-02-05 00:34:59.510911
operation
| DELETE
Для удаления конкретных строк из данной таблицы можно использовать информа-
цию не только из нее, но также и из других таблиц. Выбирать строки для удаления
можно двумя способами: использовать подзапросы к этим таблицам в предложении
WHERE или указать дополнительные таблицы в предложении USING, а затем в пред-
ложении WHERE записать условия соединения таблиц. Поскольку первый способ яв-
ляется традиционным, то мы покажем второй из них.
Предположим, что руководство авиакомпании решило удалить из парка самолетов
машины компаний Boeing и Airbus, имеющие наименьшую дальность полета.
Решим эту задачу следующим образом. В общем табличном выражении с помощью
условия model ~'^Airbus' OR model ~'^Boeing' в предложении WHERE отберем моде-
ли только компаний Boeing и Airbus. Затем воспользуемся оконной функцией rank
и произведем ранжирование моделей каждой компании по возрастанию дальности
полета. Те модели, ранг которых окажется равным 1, будут иметь наименьшую даль-
ность полета.
В предложении USING сформируем соединение таблицы aircrafts_tmp с временной
таблицей min_ranges, а затем в предложении WHERE зададим условия для отбора
строк.
Достарыңызбен бөлісу: