我想知道是否可以在一个查询中插入基于特定日期/时间的记录,而无需先选择它。
例如:
我只想在 2 分钟前没有记录时插入。
这将如何实现?
提前致谢
使用以下语句代替INSERT INTO table_name VALUES (1,'foobar')
:
INSERT INTO foobar (foobar_id,display_name,ctime)
SELECT 42,'foobar',CURRENT_TIMESTAMP()
FROM DUAL
WHERE NOT EXISTS (
SELECT 1
FROM foobar
WHERE mtime > CURRENT_TIMESTAMP() - INTERVAL 2 MINUTE
);
诀窍是:找到一个 select 语句,当且仅当该行应该被插入时,它返回一个包含要插入的列的行 - 最后放在INSERT INTO table_name
它的前面。请注意,该表DUAL
是 MySQL 和其他 DBMS 中的特殊表。