2016-05-14 141 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

相關問題