webForumDet fria alternativet

DELETE

6 svar · 262 visningar · startad av jboy_87

jboy_87Medlem sedan aug. 20011 099 inlägg
#1

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

LarsGMedlem 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
jboy_87Medlem 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

LarsGMedlem 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)
jboy_87Medlem sedan aug. 20011 099 inlägg
#5

ska testa!

jboy_87Medlem 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");
}
jboy_87Medlem sedan aug. 20011 099 inlägg
#7

löste det med att ta bort Count

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)