如何进行条件SQL插入语句?

时间:2010-11-12 20:20:58

标签: php mysql

我是MySQL的新手。我正在尝试编写一个在表中插入行的查询,但前提是在5分钟前插入了上一行。另外,我希望我的PHP代码能够知道是否插入了数据。这是我的尝试:

IF (SELECT max(EntryDate) from MyTable) < DATE_SUB(CURRENT_DATE() INTERVAL 5 MINUTE) THEN
   INSERT INTO MyTable (...) values (...)
ELSE
   Select false
END IF

不幸的是,但并不奇怪,这会产生语法错误(错误对问题的位置非常模糊)。

我做了些蠢事吗?

3 个答案:

答案 0 :(得分:5)

使用WHERE NOT EXISTS并检查>时间 - 5分钟的行。

INSERT INTO MyTable (column1, column2) 
SELECT value1, value2 FROM DUAL
WHERE NOT EXISTS (SELECT * 
                  FROM MyTable 
                  WHERE EntryDate > DATE_SUB(NOW(), INTERVAL 5 MINUTE))

答案 1 :(得分:4)

运行SELECT查询,查看程序中的结果,然后决定是否运行INSERT查询。

//Ask for how many rows are less than 5 minutes old
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM MyTable WHERE MAX(EntryDate) > CURRENT_TIMESTAMP - INTERVAL 5 MINUTE"),0);
if ($count == 0) {
    mysql_query("INSERT INTO...");
    //I know I just INSERTed a row because I'm inside the conditional!
}

答案 2 :(得分:0)

我不确定MySQL语法,但您可能需要围绕此部分括起括号:
(SELECT max(EntryDate) from MyTable) < DATE_SUB(CURRENT_DATE() INTERVAL 5 MINUTE