I have a table of scores, which is made of 2 fields: name and high score. Something like this:
-----------------------
| name | score |
-----------------------
| John | 2450 |
-----------------------
| Alice | 2420 |
-----------------------
... etc
I need to delete all the rows till the top 50 scores.
Is it possible without creating another temporary table ?
please try this
delete from scores_tbl Where
id not in
(select * from
(select id from scores_tbl order by score desc limit 50)
as temp)
Create an auto increment field
alter table scores add id int unique auto_increment not null;
This will automatically number your rows in the order of a select query without conditions or order-by
select * scores;
delete from scores where id > 50;
Finally, remove that field
alter table scores drop id;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With