继续求助,昨天的给的SQL语句有点问题

ChinaXtHuLang 2012-11-08 02:38:29

先上图。
图里的关系。我已经好了。。
表:m_data数据是:
m_id,m_uid,m_specialid
241522  2  19
241516  2  19
241517  2  19
241519  2  19

表:m_my_special数据是:
m_id,m_uid,m_videonum
17  1  2
18  2  1
19  2  4

现在要进行更新m_my_special表
得的结果要如下:
m_id,m_uid,m_videonum
17  1  2
18  2  0
19  2  4

两表的关系是:m_uid对应、
m_data表里的m_specialid对应m_my_special里面的m_id


这是昨天求职。一个坛友发的:
update m_my_special set m_videonum=isnull(b.rownum,0)
from m_my_special as a inner join (select m_uid,m_specialid,isnull(count(0),0) as rownum from m_data group by m_uid,m_specialid) as b on a.m_uid=b.m_uid and b.m_specialid=a.m_id And a.m_uid = 2

现在出现个问题。
当m_data表里面m_specialid字段没有和m_my_special表里面的m_id有对应的时候。m_my_special表里面的m_videonum字段的值。
无法更新为0,如果有。则可以更新。

怎么改上面的SQL语句啊。。


如果这样,则可以更新:
...全文
148 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
我腫了 2012-11-08
  • 打赏
  • 举报
回复
UPDATE a
	SET m_videonum=(SELECT COUNT(1) FROM m_data WHERE m_uid=a.m_uid AND m_specialid=a.m_id) 
	FROM m_my_special AS a
	WHERE EXISTS(SELECT 1 FROM m_data AS x
					WHERE x.m_uid=a.m_uid
			)
开启时代 2012-11-08
  • 打赏
  • 举报
回复
当m_data表里面m_specialid字段没有和m_my_special表里面的m_id有对应的时候。m_my_special表里面的m_videonum字段的值。 无法更新为0,如果有。则可以更新。 left join 就可以了,楼主可否试帖。
开启时代 2012-11-08
  • 打赏
  • 举报
回复
根据描述,inner改:left 足以解决问题了吧
發糞塗牆 2012-11-08
  • 打赏
  • 举报
回复
谁叫你下班才来问,如果上面还没答案的话说你更新的思路是啥。看不出规律
ChinaXtHuLang 2012-11-08
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
有问题还那么块结贴,我下班回去都结贴了。
你打酱油的。给你15分。
引用 2 楼 lixzhong 的回复:
SQL code 12 update m_my_special set m_videonum=isnull(b.rownum,0) from m_my_special as a left join (select m_uid,m_specialid,isnull(count(0),0) as rownum from m_data group by m_uid,m_speci……
你有点逗我。给你25分。。inner改:left
xb12369 2012-11-08
  • 打赏
  • 举报
回复
这是第一张图片:



这是第二张图片:


难道是这样的?
發糞塗牆 2012-11-08
  • 打赏
  • 举报
回复
你能说说你的更新目的是啥不?看数据看不出来
ChinaXtHuLang 2012-11-08
  • 打赏
  • 举报
回复
我没有权限编辑帖子啊。。把两张图片的位置换下。。。
ChinaXtHuLang 2012-11-08
  • 打赏
  • 举报
回复
我晕。我要编辑帖子啊。。图片的位置反了。。第一张是最下面的。下面的则是上面啊。
开启时代 2012-11-08
  • 打赏
  • 举报
回复
update m_my_special set m_videonum=isnull(b.rownum,0) 
 from m_my_special as a left join (select m_uid,m_specialid,isnull(count(0),0) as rownum from m_data group by m_uid,m_specialid) as b on a.m_uid=b.m_uid and b.m_specialid=a.m_id And a.m_uid = 2
發糞塗牆 2012-11-08
  • 打赏
  • 举报
回复
有问题还那么块结贴,我下班回去都结贴了。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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