oracle中在in子查询语句中order by排序能否用?

来源:百度知道 编辑:UC知道 时间:2024/06/05 19:51:14
如题,现在oracle数据库中有一个表org_master(org_id,org_name,org_parent_id,org_order)
表内数据是
序号,名称,上级ID,排序ID
1, 市局, 0, 1
2, 县5, 1, 5
3, 县1, 1, 1
4, 县3, 1, 3
5, 县2, 1, 2
6, 县4, 1, 4
7, 企业1, 2, 1
8, 企业2, 2, 2
9, 企业3, 3, 3
10,企业4, 3, 4
11,企业5, 4, 5
12,企业6, 4, 6
13,企业7, 5, 7
14,企业8, 5, 8
15,企业9, 6, 9
16,企业10, 6, 10
.
.
.

现在要查询出前三十条所有县的中的企业,而且要按照县的org_order排序
我写的语句是
SELECT ORG_ID,ORG_NAME,ORG_PARENT_ID FROM ORG_MASTER
WHERE ORG_PARENT_ID in (SELECT ORG_ID FROM ORG_MASTER WHERE ORG_PARENT_ID=1 ORDER BY ORG_ORDER)
AND ROWNUM <=30
运行语句数据库会报缺少右括号的异常,去掉ORDER BY ORG_ORDER运行就没有错误,我用的是版本是9i,网上说子句中可以用ORDER BY,谁能给看下怎么回事啊,或有什么方法查出来?
这里必须要用order by 排序,因为用户要求的,县的上下顺序可以修改,这里不用讨论这个问题

我用

SELECT ORG_ID,ORG_NAME,ORG_PARENT_ID,TYPE_ID FROM

你自己写得句子 是 这样的条件啊

SELECT ORG_ID,ORG_NAME,ORG_PARENT_ID FROM ORG_MASTER
WHERE ORG_PARENT_ID in (SELECT ORG_ID FROM ORG_MASTER WHERE ORG_PARENT_ID=1 ORDER BY ORG_ORDER)
AND ROWNUM <=30 ;

要不改成 WHERE ORG_PARENT_ID<>1

SELECT ORG_ID,ORG_NAME,ORG_PARENT_ID
FROM (select * from ORG_MASTER WHERE ORG_PARENT_ID<>1 ORDER BY ORG_ORDER)
where ROWNUM <=30;

你的数据库 我也不了解
我写得这个主要是要你知道 排序的原理

SELECT * FROM (SELECT ORG_ID,ORG_NAME,ORG_PARENT_ID FROM ORG_MASTER WHERE ORG_PARENT_ID=1 ORDER BY ORG_ORDER)
AND ROWNUM <=30;
你是想查询出县的数据排序并取前30条对吧~!
使用上述语句~!

这里用order by 有点画蛇添足