想象一下,你有一个这样的表:
+-------------+------------------+------+-----+---------+----------------+
| 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 是Los Angeles,它的 parent_id 将表示带有name字段的行California。
现在想象你有另一个这样的表:
+-----------------+---------------+------+-----+---------+----------------+
| 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字段与表id中的匹配locations。
在此表中,该state字段始终为空,因此我想使用表中的name字段对其进行更新locations。
我已经尝试过此查询以获取该state值,但它似乎不起作用(需要很长时间并且没有任何反应):
SELECT name FROM locations WHERE id IN
(SELECT parent_gid FROM locations INNER JOIN cities
ON locations.id = cities.id);
关于如何实现这一目标的任何建议?