我有一个包含数千个记录的大型数据库。
我已经做了一些Excel工作来识别我想要从我的一个大表中删除的一些记录/行,就像当我尝试在phpmyadmin中执行查询时,由于查询太大,表保持锁定。
无论如何......长话短说。
我现在有一个包含1500个记录的列表,我需要从其中一个表中删除。
有没有办法将这1500个值“粘贴”到查询中,这样我就可以恢复匹配的记录,一次选择它们并删除它们?
显然,我不想一次一个地手动执行此操作。
所以我想到的查询是这样的:
任何提示?
由于
答案 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表。