изтриване на записите без последния

PROKLET

Registered
искам като дам изтрии да се изтрият записите от таблица "X" без последния запис
 
SELECT MAX(userid) as uid FROM `samelog`;

DELETE FROM somelog WHERE userid != '{$promenliva}';



Това са ти двете заявки, с едната - намираш най-голямо user_id а с другата триеш всичко без това ID
 
е пак не мога да го наглася

Logins
id_logins
user_logins
ip_logins
country
time_logins


ще го нагласиш ли ..
 
$query_Recordset1 = "SELECT * FROM x";
$Recordset1 = mysql_query($query_Recordset1) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

тук организирам цикъл
for ($i=1; $totalRows_Recordset1 -1; $i++) {
$deleteSQL = "DELETE FROM ixa WHERE id_logins=$i
$Result1 = mysql_query($deleteSQL) or die(mysql_error());
}

малко дълго трае (с 1 секунда повече можеби :) , но е ефективно) изпълнението.
Мисля, че е ясен подхода. Взимам брой редове и организирам цикъл като брой изпълнения на тялото на цикъла е с 1 по-малко от броя на редовете и id_logins се увеличава с 1 при всяко минаване от цикъла. Дано да ти помогне не съм го пробвал, но мисля че ще работи.
 
Няма смисъл да си товари кода с цикъл + това ако има празни id-ове ще стане объркване

DELETE FROM `table` WHERE id != (SELECT MAX(id) FROM `table`)
 
raiden по твоя начин изтрива всички
btw защо като го направя с пост и дам субмит бутона и се изтриват чат след рефлеша а искам когато дам на субмита да се рефлешне страницата а с location дава грешка
 
Странно, аз го тествах и запазваше този с най-висок id. Може да опиташ така:
DELETE FROM `Logins` WHERE id_logins != (SELECT id_logins FROM `Logins` ORDER BY id_logins DESC LIMIT 1)

А за второто сложи проверката дали е изпратена формата и кода за изтриване НАД кода за извеждане на съобщенията и изписването им
 

Back
Горе