8288分类目录 8288分类目录 8288分类目录
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

MySQL在同一语句中,不能先select出同一表中的某些值,再update这个表

来源:本站原创 浏览:97次 时间:2022-01-27

You can't specify target table 'country_address' for update in FROM clause

表结构:

CREATE TABLE `country_address` (  `id` int(11) NOT NULL AUTO_I�ٰ�,��ʽNCREMENT COMMENT '自增列',  `address_code` varchar(40) NOT NULL COMMENT '地区代码',  `address_name` varchar(50) NOT NULL COMMENT '地区名称',  `short_name` varchar(20) NOT NULL COMMENT '简称',  `parent_code` varchar(40) DEFAULT NULL COMMENT '上级代码',  `level` int(11) NOT NULL COMMENT '等级 1-省 2-市 3-区',  `lng` varchar(20) DEFAULT NULL COMMENT '经度',  `lat` varchar(20) DEFAULT NULL COMMENT '纬度',  `sort` int(6) DEFAULT NULL COMMENT '排序',  `created_time` datetime DEFAULT NULL COMMENT '创建时间',  `updated_time` datetime DEFAULT NULL COMMENT '修改时间',  `remark` varchar(250) DEFAULT NULL COMMENT '备注',  `data_state` int(11) DEFAULT NULL COMMENT '状态 0-禁用 1-启用',  PRIMARY KEY (`id`),  KEY `Index_1` (`address_code`)) ENGINE=InnoDB AUTO_INCREMENT=4670 DEFAULT CHARSET=utf8 COMMENT='国家省市区地址'

要禁用某个省份下的所有市和县

1、禁用省份

SELECT * FROM country_address WHERE short_name IN('新疆','西藏','台湾','香港','澳门','海南');UPDATE country_address SET data_state=0 WHERE short_name IN('新疆','西藏','台湾','香港','澳门','海南');

2、禁用城市

SELECT * FROM country_address WHERE parent_code IN (SELECT address_code FROM country_address WHERE short_name IN('新疆','西藏','台湾','香港','澳门','海南'))UPDATE country_address SET data_state=0 WHERE parent_code IN (SELECT a.address_code FROM country_address a WHERE a.short_name IN('新疆','西藏','台湾','香港','澳门','海南'))

这里执行update就会报错,换种方式,采用多表查询更新数据

UPDATE country_address a,country_address b SET a.data_state = 0 WHERE a.parent_code = b.address_code AND b.short_name IN ('新疆','西藏','台湾','香港','澳门','海南')

3、禁用区县

下面同理,换种方式更新同一张表数据就可以了

SELECT c.* FROM country_address a,country_address b,country_address c WHERE  c.parent_code=b.address_code AND b.parent_code=a.address_code AND a.short_name IN ('新疆','西藏','台湾','香港','澳门','海南')UPDATE country_address a,country_address b,country_address c SET c.data_state = 0 WHERE  c.parent_code=b.address_code AND b.parent_code=a.address_code AND a.short_name IN ('新疆','西藏','台湾','香港','澳门','海南')

 

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net