选择此项的最有效方法是什么,然后立即删除它。
SELECT * from `usersOnline` WHERE timestamp>NOW()-INTERVAL 5 SECOND ORDER BY rand() LIMIT 1;
我怎样才能使用相同的选择查询,还能以最有效的方式删除它所选择的内容?
答案 0 :(得分:1)
$query = 'SELECT * FROM `usersOnline` WHERE timestamp>NOW()-INTERVAL 5 SECOND ORDER BY rand() LIMIT 1;';
$result = mysql_query($query);
$record = mysql_fetch_assoc($result);
$query = 'DELETE FROM `usersOnline` WHERE id = ' . $record['id'];
mysql_query($query);
使用mysql,你必须做一个然后另一个。您将使用选择结果中的键然后直接删除该记录。在此示例中,我假设您的主键列名为“id”。您可以使用当前用于访问数据库的任何方法替换myssql函数。
答案 1 :(得分:0)
你可以做这个嵌套查询
DELETE
FROM SomeTable
WHERE EXISTS
(SELECT * from `usersOnline` WHERE timestamp>NOW()-INTERVAL 5 SECOND ORDER BY rand() LIMIT 1;
)
感谢
答案 2 :(得分:0)
使用DELETE FROM:http://dev.mysql.com/doc/refman/5.0/en/delete.html
答案 3 :(得分:0)
我知道这个例子混合使用常规语句准备好的语句。但这取决于开发人员如何编写代码。这只是一个概念证明,易于阅读。
$mysqli = new mysqli('localhost', 'user', 'password', 'userTable');
$result = $mysqli->query("SELECT * from `usersOnline` WHERE timestamp>NOW()-INTERVAL 5 SECOND ORDER BY rand() LIMIT 1");
$stmt = $mysqli->prepare("DELETE FROM 'usersOnline WHERE id = ?");
while ($row = mysql_fetch_assoc($result)) {
$stmt->bind_param('i', $row["id"]);
$stmt->execute();
}
$stmt->close();
$mysqli->close();