簡體   English   中英

MySQL程序插入和刪除

[英]MySQL procedure to insert and delete

我想創建一個MySQL過程以插入表中並從另一個表中刪除...

我的程序:

insert ignore into old_events (select * from events where start < now());
delete from events where start < now();

錯誤消息: insert ignore into old_events (select * from events where start < now()); delete from events where start < now(); insert ignore into old_events (select * from events where start < now()); delete from events where start < now();

使用INSERT INTO SELECT時刪除()

insert ignore into old_events 
select * 
from `events` 
where `start` < now();

考慮使用列列表而不是*

insert ignore into old_events(col1, col2, ...) 
select col1, col2, ... 
from `events` 
where `start` < now();

請記住, now()是與時間相關的,您應將其結果存儲在變量中以進行比較。 INSERTDELETE之間, now()可能會更改。

如我所見,您將查詢插入到old_events列中,但您從事件表中選擇了所有列。 因此您只能選擇要插入到old_events列中的那列

INSERT IGNORE INTO old_events 
SELECT * FROM events 
WHERE start < now();

DELETE FROM events WHERE start < now();

在我的系統中,我創建了兩個表

create table events( id int,event_name varchar(20), start timestamp default current_timestamp);
create table old_events( id int,event_name varchar(20), start timestamp default current_timestamp);

然后將6行插入events

insert into events(id,event_name, start) values 
(1,'event1','2016-02-18'),
(2,'event2','2016-02-19'),
(3,'event3','2016-02-20'),
(4,'event4','2016-02-21'),
(5,'event5','2016-02-22'),
(6,'event6','2016-02-23');

我執行開始current time小於current time選擇查詢

SELECT * FROM events 
WHERE start < now();

返回5行, 請參見示例

但是在sqlfiddle中,我們只能運行select查詢,因此在我的系統中執行以下查詢之后,它會成功執行,並將5行插入到old_events中,其中start小於current time

INSERT INTO old_events
SELECT * 
FROM EVENTS WHERE START < NOW();

之后,我從old_events表中選擇行,其返回5行

select * from old_events;

之后,我執行刪除查詢並將其從事件表中刪除5行

DELETE FROM EVENTS WHERE START < NOW();

在所有步驟之后,我events and old_events tableevents and old_events table執行兩個查詢選擇

select * from events;  // its return 1 row where start is greater than now()
select * from old_events; // its return 5 row where start is less than now()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM