Как переписать всю таблицу с результатом запроса SELECT? (MySQL) - PullRequest
0 голосов
/ 14 января 2020

С помощью следующего запроса я создаю таблицу, которая является результатом левого соединения двух существующих таблиц:

CREATE TABLE meal_reservations
SELECT 
    meal.id, 
    meal.max_reservations, 
    SUM(IFNULL(reservation.number_of_guests, 0)) AS reservations
FROM meal
LEFT OUTER JOIN reservation 
ON meal.id = reservation.meal_id
GROUP BY meal.id;

Я бы хотел обновить его значения с помощью того же запроса SELECT всякий раз, когда мне нужно.

Я пытался REPLACE INTO, но это просто добавило новый результат в существующие строки.

1 Ответ

2 голосов
/ 14 января 2020

Как насчет усечения таблицы и последующего ее заполнения оператором insert ... select ...? Это самый простой подход, который я могу придумать. В противном случае вам нужно будет точно определить, как вы хотите управлять дельтой, что может быть утомительным.

-- empty the table
truncate table meal_reservations;

-- fill it again
insert into meal_reservations
SELECT 
    meal.id, 
    meal.max_reservations, 
    SUM(IFNULL(reservation.number_of_guests, 0)) AS reservations
FROM meal
LEFT OUTER JOIN reservation 
ON meal.id = reservation.meal_id
GROUP BY meal.id;
...