update语句执行不了

xujiawei0726 2014-10-08 11:25:21

UPDATE DIC_REGION C SET C.CHILD_COUNT = (
select A.count
from DIC_REGION B
left join
(
SELECT code , name ,count(*) as count,pcode FROM DIC_REGION where TYPE = 2 group by PCODE
) A
on B.CODE = A.pcode
where B.TYPE = 1 and C.CODE = B.CODE
) ;

字段解释:DIC_REGION是区域表,type字段1为省,2为市,pcode就是他的上级code,如果是市,也就是他所在省的code
我现在的目标就是统计某个省有几个市,并把多少市这个数字插入到CHILD_COUNT这个字段里去
...全文
396 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ffshao 2014-11-11
  • 打赏
  • 举报
回复
在group by的查询中有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要), 查询字段只能是分组的字段或者组合函数,其他的字段出现在查询字段时会报错。 简单来说吧,使用group by 关键字时,在select列表中可以指定的项目是有限制的,select语句中仅允许以下几项, 1:被分组的列 2:为每个分组返回一个值的表达式
卖水果的net 2014-10-08
  • 打赏
  • 举报
回复
SELECT code , name ,count(*) as count,pcode FROM DIC_REGION where TYPE = 2 group by PCODE 建议把 name 去掉,不然有可能出现子查询多行一行的错误 。
bw555 2014-10-08
  • 打赏
  • 举报
回复
SELECT code , name ,count(*) as count,pcode FROM DIC_REGION where TYPE = 2 group by PCODE 这个子查询的问题 你的group by 后面只有PCODE,select中除了PCODE,组函数,常数之外不能出现其他字段 可以改为group by PCODE,code , name
sych888 2014-10-08
  • 打赏
  • 举报
回复
目前语句问题是什么?
bw555 2014-10-08
  • 打赏
  • 举报
回复
SELECT code , name ,count(*) as count,pcode FROM DIC_REGION where TYPE = 2 group by PCODE 这语句到啥数据库也执行不了,基本的语法问题 报错的位置可能是其他的位置,但是报错的原因是在这
xujiawei0726 2014-10-08
  • 打赏
  • 举报
回复
SELECT code , name ,count(*) as count,pcode FROM DIC_REGION where TYPE = 2 group by PCODE 我用的是mysql,这条语句是可以执行的,他报错的是这条 where B.TYPE = 1 and C.CODE = B.CODE,这条的只要目的是希望把查询出来的结果和需要修改的字段相关联

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧