我不想要我表中的所有值

时间:2015-04-15 12:00:28

标签: mysql sql database drupal drupal-7

我有一张2.500.000行的表。所有这些行都有一个timestamp值。我想保留100行具有最大时间戳的行。我想删除所有其他值!!

$values_to_delete = db_delete('error_log_jira')
    ->condition('timestamp', 1423731524, '>')
    ->execute();

我有这个代码并且工作完美,但我不知道如何把我想要的东西放在这里可以帮助我的人?我需要一个真正的帮助!!

1 个答案:

答案 0 :(得分:0)

让我们说你的表有2.500.000行称为TableA。你可以这样做:

  1. 创建一个临时表TableB,其列与TableB

  2. 相同
  3. 根据时间戳

  4. 编写一个提取100行的查询
  5. 在TableB中插入这100行

  6. 删除TableA的所有行

  7. 在TableA中插入TableB的所有行并删除TableB

  8. 步骤2-4可以通过如下查询在sql中完成:

    insert into TableB (SELECT * FROM TableA ORDER BY timestamp DESC LIMIT 100)