您好我想在Mysql中使用DELETE语句以删除第1000个条目后的所有条目,但同时按列的降序排序条目...这是我的代码使用:
mysql_query("DELETE FROM 'tblname' WHERE @i IN (1000,ROW_COUNT()) ORDER BY points DESC");
虽然没有发生错误,但它似乎没有因为某些原因而工作....我在WHERE子句中遇到麻烦...有人可以提供帮助吗?
答案 0 :(得分:5)
您的表名附近有引号:
mysql_query("DELETE FROM 'tblname' WHERE @i IN (1000,ROW_COUNT()) ORDER BY points DESC");
用反引号替换它们:
mysql_query("DELETE FROM `tblname` WHERE @i IN (1000,ROW_COUNT()) ORDER BY points DESC");
修改(删除记录)
尝试:
mysql_query("DELETE TOP (1000) FROM `tblname` ORDER BY points DESC");
您也可以尝试:
DELETE FROM tablename ORDER BY points DESC LIMIT 1000 *
假设这是一个名为id
的列:
mysql_query("DELETE FROM tablename WHERE id > 1000");
这将留下前1,000行并删除所有其他条目。
还有一些例子:
DELETE FROM `table` WHERE `id` < 1000
DELETE FROM `table` WHERE `id` LIMIT 0, 1000
DELETE FROM `table` WHERE ID BETWEEN 1 AND 999
<强>脚注:强> 如果您正在为表名使用变量(这可能是一种可能性,而不会看到完整的代码),请使用以下内容, IF 就是这种情况;很多人。
$tblname = "your_table_name";
mysql_query("DELETE FROM `".$tblname."` WHERE @i IN (1000,ROW_COUNT()) ORDER BY points DESC");
您还应该考虑将mysqli_*
函数与预准备语句或PDO一起使用。 mysql_*
函数已弃用,将在以后的版本中删除。