关于连接的mySQL更新查询

时间:2016-02-07 10:17:28

标签: php mysql

我有一个国家/地区数据库和另一个名为区域的表。

Countries 
[id, name, status (1 enabled 0 disabled) ]


Zones 
[id, name, country_id]

我使用以下查询将所有国家/地区与其区域匹配。

select 
z.name as state, 
z.id as state_id, 
c.name as country_name, 
c.id as country_id, 
c.status as country_status 
from countries c left join zones z on c.id = z.country_id 

所以基本上简而言之,区域是状态,输出就是这样。

+-----------------------------------------------------+----------+---   -----------------------------------------+------------+----------------+
| state                                               | state_id | country_name                               | country_id | country_status     |
+-----------------------------------------------------+----------+---  -----------------------------------------+------------+----------------+
| NULL                                                |     NULL | Christmas Island                           |         45 |              1   
| NULL                                                |     NULL | Puerto Rico                                |        172 |              1    
| NULL                                                |     NULL   Isle of Man                                |        254 |              1  
| Álava                                        |     2971 | Spain                                      |        195 |              1   
| Ávila                                        |     2976 | Spain                                      |        195 |              1 
| Évora                                        |     2656 | Portugal                                   |        171 |              1   

此处粘贴的输出非常大,因此只显示在结果的末尾

我希望在没有区域的情况下将国家/地区的状态更新为0。知道我怎么能通过mySQL做到这一点?

1 个答案:

答案 0 :(得分:5)

您可以像这样使用not in

 update Countries set status=0 where id not in (select distinct country_id from Zones )