在MySQL中删除表内容
我有两个表,一个表有150万条记录,另一个表有120万条记录。我有2GB的RAM分配给MySQL 两个表中的公共列都是id在MySQL中删除表内容,mysql,mysqli,mysqldump,mysql-error-1064,Mysql,Mysqli,Mysqldump,Mysql Error 1064,我有两个表,一个表有150万条记录,另一个表有120万条记录。我有2GB的RAM分配给MySQL 两个表中的公共列都是id mysql> desc day_tran; +-----------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------
mysql> desc day_tran;
+-----------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| card_number | varchar(20) | NO | MUL | NULL | |
| ATM_id | varchar(20) | NO | MUL | NULL | |
| responder | varchar(1) | NO | | NULL | |
| response_code | varchar(3) | NO | | NULL | |
| Amount | varchar(20) | NO | | NULL | |
| Time | varchar(8) | NO | | NULL | |
| RR_number | varchar(14) | NO | | NULL | |
| tran_code | varchar(6) | NO | | NULL | |
| reversal_reason | varchar(2) | NO | | NULL | |
| date | varchar(6) | NO | | NULL | |
| tlf_date | varchar(6) | NO | MUL | NULL | |
+-----------------+-------------+------+-----+---------+----------------+
12 rows in set (0.74 sec)
mysql> desc reversal;
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | 0 | |
| card_number | varchar(20) | NO | | NULL | |
| ATM_id | varchar(20) | NO | | NULL | |
| responder | varchar(1) | NO | | NULL | |
| response_code | varchar(3) | NO | | NULL | |
| Amount | varchar(20) | NO | | NULL | |
| Time | varchar(8) | NO | | NULL | |
| RR_number | varchar(14) | NO | | NULL | |
| tran_code | varchar(6) | NO | | NULL | |
| reversal_reason | varchar(2) | NO | | NULL | |
| date | varchar(6) | NO | | NULL | |
| tlf_date | varchar(6) | NO | | NULL | |
+-----------------+-------------+------+-----+---------+-------+
12 rows in set (0.12 sec)
现在我需要从day_tran表中删除Reversion表中的所有行
我尝试了一些删除和创建新表的方法,其中包含了其余的结果,但最终并没有结果
任何解决办法都会对我有很大帮助
DELETE FROM day_tran d INNER JOIN reversal r ON d.id = r.id WHERE d.id = r.id
应该这样做。您只需使用下面的删除查询即可。如果要根据两个表中通常显示的id删除所有记录
DELETE FROM reversal r inner join day_tran d on r.id = d.id
您可以使用此查询。不需要WHERE语句或任何子语句来选择:
DELETE FROM reversal r INNER JOIN day_trans d ON r.id = d.id;
你很好。在我更新之前,你真的复制了我的错误答案吗?他想从day_tran中删除reversalJOIN+WHERE语句中存在的记录?我认为加入就可以完成这项工作,因为您只能获得r.id=d.id的条目。这可能只需要几周的时间。@Sebi2020对不起,我的错误,我有点困惑。。现在我编辑了我的应答错误1064 42000:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在第1行中使用“d.id=r.id上的d.id=r.id”,其中d.id=r.id“What ever delete语句我正在使用它,执行它需要数小时,但什么都没有发生。1。我想从day_tran表2中删除行。表中存在数百万行,RAM非常有限,所以我需要最好的查询。子查询需要大量资源。