(PK/FK)の関係がない以下の構造のテーブルが2つあります。mysqlの同じ列を持つ複数のテーブルから削除する方法
======== 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を2つのテーブル間のリンクとして使用しています。私がしようとした
ERROR 1093 (HY000): You can't specify target table 'country' for update in FROM clause
:
delete country , city from country, city where city.country_id = country.id and country.id in (select id from country where visible = 0);
しかし、それは以下のエラーを返します:私は、コードのこの部分を思い付い検索した後、視認性の値は0です。国や都市を削除しようとしています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 |
+----+-------+---------+
、それでも国のために値0をしている1つのより多くの価値があり、その結果を参照してください。以下: + ---- + ------- + --------- + | id |名前|見える| + ---- + ------- + --------- + | 2 | mmm | 1 | | 3 | ttt | 1 | | 4 | kkkkk | 0 | + ---- + ------- + --------- + – Kamal
@Kamal明確ではありませんが、私はLEFT結合が必要だと思います。 – Mihai
LEFT JOINでは、郡のテーブルのすべてのデータが削除されました。 – Kamal