0

我想知道是否可以在一个查询中插入基于特定日期/时间的记录,而无需先选择它。

例如:

我只想在 2 分钟前没有记录时插入。

这将如何实现?

提前致谢

4

1 回答 1

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 中的特殊表。

于 2012-05-25T20:43:41.670 回答