mysql - mysql如何删除多个表中同一列?

标签 mysql

我有 2 个具有以下结构的表,其中没有 (PK/FK) 的关系。

======== country =======
+----+-------+---------+
| id | name  | visible |
+----+-------+---------+
|  1 | kkk   |       0 |
|  2 | mmm   |       1 |
|  3 | ttt   |       1 |
|  4 | kkkkk |       0 |
+----+-------+---------+

============ city =============
+----+------+---------+-------+
| id | name | visible | c_id  |
+----+------+---------+-------+
|  3 | k333 |       0 |     1 |
|  2 | k222 |       1 |     1 |
|  1 | kkk  |       1 |     1 |
|  4 | k444 |       0 |     2 |
|  6 | k666 |       0 |     2 |
+----+------+---------+-------+

我使用 country.id 和 city.country_id 作为两个表之间的链接。我试图删除可见性值为 0 的国家和城市。搜索后我想出了这段代码:

delete country , city from country, city where city.country_id = country.id and country.id in (select id from country where visible = 0);

但它返回以下错误:

ERROR 1093 (HY000): You can't specify target table 'country' for update in FROM clause

我尝试像这样将 JOIN 与 WHERE 结合使用:

DELETE country , city 
FROM country JOIN city 
ON city.country_id = country.id 
WHERE  country.visible = 0

效果很好,但是还有一行值为 0 的行没有被删除。

======== Country ======
+----+-------+---------+
| id | name  | visible |
+----+-------+---------+
|  2 | mmm   |       1 |
|  3 | ttt   |       1 |
|  4 | kkkkk |       0 |
+----+-------+---------+

最佳答案

@Mihai 在我再次检查你的代码后,我只是添加了 WHERE 并且它像这样工作:

DELETE country, city 
FROM country 
LEFT JOIN city 
ON city.country_id = country.id 
WHERE country.visible = 0;

关于mysql - mysql如何删除多个表中同一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44479708/

相关文章:

mysql - Laravel 新手和外部 (Moodle) 数据库

mysql - 如何对旧行和新行执行 INSERT ... ON DUPLICATE KEY UPDATE?

php - 在我的表中创建 message_id 时出现 MySQL 错误

java - 无法使用 JSP、Glassfish 连接到 mysql 数据库

php - Joomla 3.3 - 如何存储用户密码?

MySQL 计算文本值的每一位的总和

php - 使用 PHP 安全连接到 MySQL 的最佳方式

mysql - 将数据插入具有多对多关系的表中

mysql - 通过读取另一个数据插入数据库

mysql - 如何设置Django忽略mysql错误并强制mysql插入一条记录?