欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

informix嵌套查询有关问题,高手

更新时间: 2014-01-05 02:19:55 责任编辑: Author_N1

 

informix嵌套查询问题,求助高手
SQL语句如下:
SELECT * FROM ( SELECT first 200 * from cts_trans order by mon_date DESC, mon_id DESC ) t order by
 mon_date , mon_id

想实现从 cts_trans 表中,查出最后200条记录,然后将这200 条记录按升序排列。在sql server 下,将“first” 换成“top” 执行通过。在informix,进dbaccess命令行执行 ,报错如下(first 换成 top 也是一样):
 201: A syntax error has occurred.



--参考方法--
informix不支持这种嵌套查询,你可以用临时表来实现
SELECT first 200 * from cts_trans order by mon_date DESC, mon_id DESC into temp xx;
SELECT * FROM xx order by mon_date , mon_id
--参考方法--
支持1楼的,informix不支持同一张嵌套查询,但不同表是可以的,比如:
select col1,col2 from table1 where col1 in (select col3 from table2 where...)
--参考方法--
1楼的回复有问题。 在into temp的这种方式下是不支持first关键字的。反正使用first限制很多,比如不能用在视图的定义中,不能用在嵌套sql中,不能用在子查询中,不能用在insert的select子句中,不能用在将查询到的数据插入临时表的select中等等。

在informix里面要用一个sql来实现楼主的这个要求,没想出来这么搞。


--参考方法--
的确first嵌套里面不能用,你这里又不需要嵌套查询,括号里不是已经降序排列了?括号外面你又变成升序排列了。 
不折腾....
--参考方法--
要升序直接去掉括号里的DESC,不对吗?
--参考方法--
你可以写个SP,里面用
....
foreach
SELECT first 200 * 
into: ls_goodcd,
...
 
from cts_trans order by mon_date DESC, mon_id DESC ; 
insert into temp ss (....)
values(...)
end foreach
foreach

SELECT a
into: ls_goodcd,
ls_gdcdnm,
...
FROM ss order by mon_date , mon_id 
end foreach 

return ls_goodcd,ls_gdcdnm.......

........
--参考方法--
不会,帮忙顶起来
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:19:55
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8563/
本文WWW.DOC100.NET DOC100.NET版权所有。