我是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
不幸的是,但并不奇怪,这会产生语法错误(错误对问题的位置非常模糊)。
我做了些蠢事吗?
答案 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