Mysql SELECT,查找行数,然后在单个查询语句中插入


Mysql SELECT , find number of rows , then INSERT in a single query statement


假设我们有一个收件箱表,一次最多只能接收50条消息,为此我使用以下代码:

$maximum_messages_in_inbox = 50;
$query1 = mysql_query("SELECT * from inbox");
if(mysql_num_rows($query1) > $maximum_messages_in_inbox)
{
   echo "Message memmory if full please try again later";
}
else
{
   mysql_query("insert into inbox set text = '$text' , sender = '$sender' ");
}

这段代码工作得很好,但是每次将执行两个查询。
我的问题是我们是否可以在一个查询中调整上述目的:

mysql_query("select * from inbox if num > 50 insert else error");
if(error)
{
   echo "Message memmory if full please try again later";
}

期待您的合作。由于

你可以用这个技巧在SQL中实现条件INSERT:

INSERT INTO inbox(text, sender)
SELECT 'text value', 'sender value'
FROM dual
WHERE (SELECT COUNT(*) FROM inbox) < 50;

只有满足WHERE子句,INSERT才会被处理。