mysql - 从具有单列的表中删除除前 N 行以外的所有行

标签 mysql

我需要一个查询。 删除 表中除前 N 行之外的所有行。该表只有一列。喜欢,

|friends_name|
==============
| Arunji     |
| Roshit     |
| Misbahu    |
| etc...     |

此列也可能包含重复的名称。

  • 包含重复的名字

  • 只有一列。

最佳答案

如果您可以按 friends_name 排序您的记录,并且没有重复项,您可以使用:

DELETE FROM names
WHERE
  friends_name NOT IN (
    SELECT * FROM (
      SELECT friends_name
      FROM names
      ORDER BY friends_name
      LIMIT 10) s
  )

请参阅 fiddle here .

或者你可以使用这个:

DELETE FROM names ORDER BY friends_name DESC
LIMIT total_records-10

其中 total_records 是 (SELECT COUNT(*) FROM names),但是您必须通过代码来执行此操作,您不能在查询的 LIMIT 子句中输入计数。

关于mysql - 从具有单列的表中删除除前 N 行以外的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17292375/

相关文章:

mysql - 为酒店设计数据库

php - 用图片更新Mysql内容

mysql - 涉及 SET 数据类型的 Select 语句

mysql - LONGTEXT在mysql中占用什么?

mysql - 查询数据包过大 MySQL

php - MySQL MATCH AGAINST 3 个字符表达式

mysql - 使用多值 SQL 更新单列

python - Django user.save() 在列 'is_superuser' 上失败不能为空

mysql - 如何加快我的sql查询速度?

php - 多条记录的时间戳操作