免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2607 | 回复: 8
打印 上一主题 下一主题

[求助]这个跨表update 怎么写 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-30 10:26 |只看该作者 |倒序浏览
5可用积分
1.有文章表
文章id:id
文章分类:fid
文章标题:subject

2.文章分类表
分类id:fid
分类名字:title
分类文章记录数:records

意思就是想把文章表中所属分类下的文章总数,同步到分类表中.

写到这里就写不来了,哪位高人指点下.分数不够再加.先谢过了.
update 文章分类表 set records=(
select count(fid) from 文章表 GROUP by 文章表.fid
)
where 文章分类表.fid=文章表.fid

最佳答案

查看完整内容

update 文章分类表,文章表 set 文章分类表.records=(select count(fid) from 文章表 where 文章表.fid=文章分类表.fid)这样呢?

论坛徽章:
0
2 [报告]
发表于 2009-03-30 10:26 |只看该作者
update 文章分类表,文章表 set 文章分类表.records=(
select count(fid) from 文章表  where 文章表.fid=文章分类表.fid)

这样呢?

论坛徽章:
0
3 [报告]
发表于 2009-03-30 14:04 |只看该作者
自己顶一下.

论坛徽章:
0
4 [报告]
发表于 2009-03-30 14:55 |只看该作者
update 文章分类表 set records=(
select fid,count(fid) from 文章表 GROUP by 文章表.fid
) as b where b.fid=文章分类表.fid

试试这个

论坛徽章:
0
5 [报告]
发表于 2009-03-30 15:19 |只看该作者
luanqibazao  把你说的转成sql


mysql> update doc_forums set records=(
    -> select fid,count(fid) from doc_threads GROUP by doc_threads.fid
    -> ) as b where b.fid=doc_forums.fid;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'as b where b.fid=doc_forums.fid' at line 3
mysql>

论坛徽章:
0
6 [报告]
发表于 2009-03-30 15:21 |只看该作者
想了好久,
暂时写了3个trigger先解决问题 ,解决同步问题,郁闷ing.

论坛徽章:
1
白银圣斗士
日期:2015-11-23 08:33:04
7 [报告]
发表于 2009-03-30 15:27 |只看该作者
要是觉得一个语句不好写,可以分解成两个,像这样?:
create TEMPORARY table xx select 文章表.fid,count(fid)  as all_fid from 文章表 GROUP by 文章表.fid;
update 文章分类表as a,xx as b  set a.records=b.all_fid where a.fid=b.fid;

一个sql也可以,写成关联,把groupby 放在最后

论坛徽章:
0
8 [报告]
发表于 2009-03-30 15:47 |只看该作者
原帖由 luanqibazao 于 2009-3-30 15:30 发表
update 文章分类表,文章表 set 文章分类表.records=(
select count(fid) from 文章表  where 文章表.fid=文章分类表.fid)

这样呢?


luanqibazao
呵呵,测试了,貌似可以了!
不过不太明白为什么可以!

论坛徽章:
0
9 [报告]
发表于 2009-03-30 15:49 |只看该作者
原帖由 枫影谁用了 于 2009-3-30 15:27 发表
要是觉得一个语句不好写,可以分解成两个,像这样?:
create TEMPORARY table xx select 文章表.fid,count(fid)  as all_fid from 文章表 GROUP by 文章表.fid;
update 文章分类表as a,xx as b  set a.recor ...


呵呵,这个也行.

也谢谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP