mysql粘贴一长串值

时间:2013-08-28 09:13:50

标签: php mysql

我有一个包含数千个记录的大型数据库。

我已经做了一些Excel工作来识别我想要从我的一个大表中删除的一些记录/行,就像当我尝试在phpmyadmin中执行查询时,由于查询太大,表保持锁定。

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

我现在有一个包含1500个记录的列表,我需要从其中一个表中删除。

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

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

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

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

任何提示?

由于

2 个答案:

答案 0 :(得分:1)

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

Select Name
From Users
Where ID IN (1,2,3,4 .....) ;

答案 1 :(得分:0)

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

<强>首先
您可以直接在where子句中粘贴以逗号分隔的ID列表。

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

您收到错误'数据包太大',您可以增加max_allowed_packet

  

可以传输到MySQL或从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 Syntax

不要忘记删除你的tmp表。