webForumDet fria alternativet

DELETE

Databaser & SQL

6 svar · 262 visningar · startad av jboy_87

Medlem sedan aug. 20011 099 inlägg
Frågan#1

Hur gör man för att behålla dem 30 första posterna och radera resten?

Medlem sedan dec. 200012 464 inlägg
#2

Begreppen först och sist är inte relevant.

Du kan prata om de 30 poster som har högst värde i en kolumn men använd inte första och sista.

delete from t order by id desc limit 30,-1
Medlem sedan aug. 20011 099 inlägg
#3

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '-1)' at line 1

Medlem sedan dec. 200012 464 inlägg
#4

Jag var nog lite snabb där. Det går inte att offset för limit i samband med delete.

Du får nog göra det i två steg så vitt jag kan se.

set rs = connect.execute("select id from t order by id desc limit 30,1")

if  not rs.eof then connect.execute "delete from t where id < " & rs(0)
Medlem sedan aug. 20011 099 inlägg
#5

ska testa!

Medlem sedan aug. 20011 099 inlägg
#6

ska det se ut så här i PHP? :q

$sql = "SELECT Count(ID1) from t order by Datum DESC limit 30,1";
$result = mysql_query($sql);
$antal = mysql_result($result, 0);
if ($antal > 0) {
mysql_query("delete from t where ID1 < $antal");
}
Medlem sedan aug. 20011 099 inlägg
#7

löste det med att ta bort Count

258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)