为何找不到qu.id???????

huanhuanfu 2010-06-23 09:29:42
update question qu set qu.state=0 where
(
select count(*) rn from (select distinct(re.userid) from restore re where re.quid=qu.id)
)>10

说明:question是问题表,restore是回复表,当一个问题有10个人回复了,我就修改这个问题状态为0,不让人继续回复,
但是现在报错了,执行语句时,找不到qu.id
求:各位大哥帮忙解决下

...全文
114 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ngx20080110 2010-06-23
  • 打赏
  • 举报
回复

-- 1. 检查表结构
desc question;
desc restore;

-- 2. 更新数据
update question q set q.state = 0
where exists (
select count(distinct(userid))
from restore
where quid = q.id
having count(distinct(userid)) > 10
)
luoyoumou 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 huanhuanfu 的回复:]
测试表1表名:question 字段 id state
测试表2表明:restore 字段 id content userid quid

我就是想根据下面的条件进行更改上面的状态

update [question] as qu set qu.state=0 where
(select count(*) from (select distinct(re.userid) from [r……
[/Quote]

-- 奇怪啦,加我QQ:304466490
huanhuanfu 2010-06-23
  • 打赏
  • 举报
回复
测试表1表名:question 字段 id state
测试表2表明:restore 字段 id content userid quid

我就是想根据下面的条件进行更改上面的状态

update [question] as qu set qu.state=0 where
(select count(*) from (select distinct(re.userid) from [restore] re where re.quid=qu.id))>10

luoyoumou 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 luoyoumou 的回复:]
SQL code
-- 你执行以下语句,把结果贴出来看看:
desc question;
[/Quote]

-- 在 SQL * Plus中啊!
luoyoumou 2010-06-23
  • 打赏
  • 举报
回复
-- 你执行以下语句,把结果贴出来看看:
desc question;
huanhuanfu 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 luoyoumou 的回复:]
引用 13 楼 huanhuanfu 的回复:
引用 12 楼 ngx20080110 的回复:
两句update语句你要分开执行,或者在每句后面加上分号结束符。

这是两条语句,但是下面的那个语句为什么给去别名会报错呢?我写下面的语句是为了解决上面语句的问题!!


-- 用我4楼的代码测试过吗?
[/Quote]

测试过了。。还是报错哦!
ngx20080110 2010-06-23
  • 打赏
  • 举报
回复
update question set state=0 where id=1;
这样执行会报错么?抱什么错?
luoyoumou 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 huanhuanfu 的回复:]
引用 12 楼 ngx20080110 的回复:
两句update语句你要分开执行,或者在每句后面加上分号结束符。

这是两条语句,但是下面的那个语句为什么给去别名会报错呢?我写下面的语句是为了解决上面语句的问题!!
[/Quote]

-- 用我4楼的代码测试过吗?
huanhuanfu 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ngx20080110 的回复:]
两句update语句你要分开执行,或者在每句后面加上分号结束符。
[/Quote]
这是两条语句,但是下面的那个语句为什么给去别名会报错呢?我写下面的语句是为了解决上面语句的问题!!
ngx20080110 2010-06-23
  • 打赏
  • 举报
回复
两句update语句你要分开执行,或者在每句后面加上分号结束符。
huanhuanfu 2010-06-23
  • 打赏
  • 举报
回复
update [question] as qu set qu.state=0 where
(select count(quid) from (select distinct(re.userid) from [restore] re where re.quid=qu.id))>10

update question qu set qu.state=0 where qu.id=1

为什么这样也会报错呢?
huanhuanfu 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 luoyoumou 的回复:]
引用 6 楼 huanhuanfu 的回复:
引用 1 楼 luoyoumou 的回复:
question 表中 没有名为 id 的字段!


有ID哦!


-- 呵呵,楼主胸很大,太性感啦..............
[/Quote]

不要怎么色好吗?帮我解决问题嘛!!急死了……
luoyoumou 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 huanhuanfu 的回复:]
引用 1 楼 luoyoumou 的回复:
question 表中 没有名为 id 的字段!


有ID哦!
[/Quote]

-- 呵呵,楼主胸很大,太性感啦..............
iqlife 2010-06-23
  • 打赏
  • 举报
回复
问问。照片是楼主本人,?
tangren 2010-06-23
  • 打赏
  • 举报
回复
单从语法上来看,是没有问题的,
当然从SQL写法来说,外层的count嵌套多余,直接count(DISTINCT (re.userid))就行了
另外,还有问题,请贴出建表的SQL脚本和测试数据脚本。
huanhuanfu 2010-06-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luoyoumou 的回复:]
question 表中 没有名为 id 的字段!
[/Quote]

有ID哦!
iqlife 2010-06-23
  • 打赏
  • 举报
回复
不是没有。是你语句写的有问题。。。
要用WHERE EXISTS ()的形式。。。
luoyoumou 2010-06-23
  • 打赏
  • 举报
回复
-- 要不这样试试: 
update question qu set qu.state=0
where exists ( select count(distinct(re.userid))
from resotre re
where re.quid=qu.id
having count(distinct(re.userid)) > 10 );
luoyoumou 2010-06-23
  • 打赏
  • 举报
回复
-- 要不这样试试: 
update question qu set qu.state=0
where exists ( select count(distinct(re.userid))
from resotre re
where re.quid=qu.id
having countdistinct(re.userid)) > 10 );
ngx20080110 2010-06-23
  • 打赏
  • 举报
回复
仔细检查一下question表中是否有id字段。
加载更多回复(2)

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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