这两句查询为什么第一句不能运行,而第二句却能运行?

cer 2005-10-20 11:07:45
(1).select * from (select * from package where package_id in (select package_id from package_items where tags like '%HTML%' group by package_id order by count(tags) desc) ) where rownum <=3
(2).select * from package where package_id in (select * from (select package_id from package_items where tags like '%HTML%' group by package_id order by count(tags) desc) where rownum <=3)

这两句为什么第一句不能运行,而第二句却能运行?

第一名提示为缺少右括号???

...全文
124 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiaozhiwei 2005-10-20
  • 打赏
  • 举报
回复
select *
from (
select *
from package
where package_id in (
select package_id
from (
select package_id
from package_items
where tags like '%HTML%'
group by package_id
order by count(tags) desc
)
)
)
where rownum <=3
cer 2005-10-20
  • 打赏
  • 举报
回复
这就是第二种方法啊
sasacat 2005-10-20
  • 打赏
  • 举报
回复
再晕,这样不是跟你第二句一样吗....

你第一句不行的原因是 order by count(tags) desc在那个in子句里没有意义,oracle认为这样写是错的
sasacat 2005-10-20
  • 打赏
  • 举报
回复
啊,写错了,应该是这样
SELECT *
FROM PACKAGE
WHERE package_id IN (
SELECT *
FROM (SELECT package_id
FROM package_items
WHERE tags LIKE '%HTML%'
GROUP BY package_id
ORDER BY COUNT (tags) DESC)
WHERE ROWNUM <= 3)
sasacat 2005-10-20
  • 打赏
  • 举报
回复
改成这样吧
SELECT *
FROM (SELECT package_id, COUNT (tags) COUNT
FROM package_items
WHERE tags LIKE '%HTML%'
GROUP BY package_id
ORDER BY COUNT DESC)
WHERE ROWNUM <= 3
cer 2005-10-20
  • 打赏
  • 举报
回复
qiaozhiwei(乔)
的办法可以考虑一下

17,377

社区成员

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

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