MySQL将随机行从一个表移动到另一个表


MySQL move random row from one table to another

是否可以用这种方式将一个随机行(带一列)移动到另一个表中,这样即使同时请求也不会有人获得这些数据?

例如:如果你打开我的页面,你会从MySQL中得到一个数据,即使你同时打开这个页面,也没有人会得到。

现在我是这样做的:

mysql_query("INSERT INTO `ShowRow` SELECT * FROM `AllRows` WHERE 1 LIMIT 1");
mysql_query("DELETE FROM `AllRows` LIMIT 1");

有可能采取其他更好的方法吗?或者,如果只有一列,如何SELECT某一特定行?

您可以使用函数RAND()对行进行随机排序,并取第一个。

从所有行中选择*ORDER BY RAND()LIMIT 1,1

谢谢大家,但我是这样做的:

$accCount = mysqli_query($connect, "SELECT * FROM AllRows");
$accCount = mysqli_num_rows($accCount);
$RandAcc = rand(0, $accCount);
$result = mysqli_query($connect, "SELECT * FROM `AllRows`");
$ReplaceRandAcc = mysqli_result($result, $RandAcc);
mysqli_query($connect, "INSERT INTO `ShowRow` SELECT * FROM `AllRows` WHERE login='".$ReplaceRandAcc."'");
mysqli_query($connect, "DELETE FROM `AllRows` WHERE login='".$ReplaceRandAcc."'");
function mysqli_result($res, $row, $field=0) {
    $res->data_seek($row);
    $datarow = $res->fetch_array();
    return $datarow[$field];
}