2016-05-14 224 views
0

是否有可能以这种方式将一个随机行(有一列)移动到另一个表,因此即使同时请求它也没有人获取此数据?MySQL将随机行从一个表移动到另一个表

例如:如果你打开我的页面,你会得到一个来自MySQL的数据,即使你和你同时打开这个页面,也不会有人收到数据。

现在我做这种方式:

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

是否有可能做一些其他更好的办法?或者如果只有一列,如何SELECT某些特定的行?

+0

为什么,你关心你的数据库妥协?这是什么原因? –

+0

^或触发器。无论如何,如果它只存在一列,为什么还要使用WHERE子句呢? – Chay22

+1

即使使用rand函数进行随机选择,也无法保证实现所尝试的内容,除非每个显示的项目都存储在不同的表中,以便下一个选择可以交叉检查其当前是否显示给其他人。 –

回答

0

感谢所有,但我想到了做这样:

$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]; 
} 
0

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

SELECT * FROM AllRows ORDER BY RAND()LIMIT 1,1

+0

该链接你离开http://sql.sh/fonctions/rand - 不是每个人都可以理解法语。 Stack大多是一个基于英文的网站。 –

+0

对不起,我当然回答得太快:/ – Norckan

相关问题