如何用 SELECT 查询的结果覆盖整个 table? (MySQL)
How to overwrite an entire table with the result of a SELECT query? (MySQL)
通过以下查询,我创建了一个 table,它是两个现有 table 左联接的结果:
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
但这只是将新结果附加到现有行上。
如何截断 table 然后用 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;
通过以下查询,我创建了一个 table,它是两个现有 table 左联接的结果:
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
但这只是将新结果附加到现有行上。
如何截断 table 然后用 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;