次のようなテーブルがあると想像してください。
+-------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | | |
| parent_id | int(11) | YES | MUL | NULL | |
+-------------+------------------+------+-----+---------+----------------+
このテーブルを呼びましょうlocations
これは、都市または州を表します。
たとえば、namefieldが、の場合、そのparent_idはフィールドLos Angelesを持つ行を表します。nameCalifornia
ここで、次のような別のテーブルがあると想像してください。
+-----------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(450) | YES | | NULL | |
| state | varchar(135) | YES | | NULL | |
+-----------------+---------------+------+-----+---------+----------------+
このテーブルを呼びましょうcities。
各行は都市を表し、フィールドはテーブルのにid一致します。idlocations
このテーブルでは、フィールドは常に空なので、テーブルのフィールドstateで更新したいと思います。namelocations
値を取得するためにこのクエリを試しましたstateが、機能していないようです(時間がかかり、何も起こりません)。
SELECT name FROM locations WHERE id IN
(SELECT parent_gid FROM locations INNER JOIN cities
ON locations.id = cities.id);
これを達成する方法について何か提案はありますか?