0

我有一个大型数据库,其中包含许多包含数千条记录的表。

我已经完成了一些 Excel 工作来识别我想从我的一张大表中删除的一些记录/行,因为当我尝试在 phpmyadmin 中进行查询时,由于查询太大,表一直处于锁定状态。

无论如何....长话短说。

我现在有一个需要从我的一张表中删除的 1500 条记录的列表。

有没有办法将这 1500 个值“粘贴”到查询中,这样我就可以带回匹配的记录,一次选择它们并删除它们?

显然,我不想一次手动执行此操作。

所以我想到的查询是这样的:

  • 查找与这些 ID 匹配的任何记录 (WHERE ID = )
  • 粘贴到 Excel 女士的 ID 列表中
  • 结果返回
  • 可以选择所有行并删除

有小费吗?

谢谢

4

2 回答 2

1

只需在您的查询中使用关键字“IN”与您的价值列表。喜欢 :

Select Name
From Users
Where ID IN (1,2,3,4 .....) ;
于 2013-08-28T09:19:48.553 回答
0

有不止一种方法可以做到这一点。

第一:
您可以直接将逗号分隔的 ID 列表粘贴到 where 子句中。

DELETE FROM tablename WHERE ID IN (1,2,3,4);

如果您收到错误“数据包太大”,您可以增加max_allowed_pa​​cket

可以与 MySQL 5.0 服务器或客户端传输或从 MySQL 5.0 服务器或客户端传输的最大可能数据包为 1GB。

第二:
您可以将 Excel 文件导出到 csv 文件并将数据加载到临时表中,然后使用 tmp 表作为参考从表中删除

LOAD DATA INFILE 'X:\filename.csv'
    INTO TABLE tmptable
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n';

DELETE t1 
    FROM tablename t1
    JOIN tmptable t2 ON t1.ID = t2.ID;

参考:MySQL LOAD DATA INFILE 语法

不要忘记删除您的 tmp 表。

于 2013-08-28T09:35:10.680 回答