Informix 没有类似Oracle的 with as 的子查询部分的用法

Only了了 2019-06-17 03:32:45
Informix 没有类似Oracle的 with as 的子查询部分的用法
...全文
528 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liaosnet 2020-04-24
在informix 14.10中支持该语法,之前的版本是使用 select * from ( select '123123' user_id,'201904' rptdate,'47' monfee from dual) table_tst; 来代替吧。
回复
Only了了 2019-09-24
引用 5 楼 wgf098 的回复:
可以select .... into temp table_tst,创建了临时表,session一关,临时表就自动释放了。很多操作数据库内部也会自动创建临时表,只是外面感觉不到。

谢谢你的回答!这样的话也可以。不过我还有几个疑问:
那创建的这个临时表,需不需要提交才能使用呢?
如果我不关闭session,使用回滚,临时表是否也会释放呢?
如果我多次执行select .... into temp table_tst,是否会造成数据重复?
也就是说每次执行前需不许要手动drop零时表或truancate数据呢?
回复
wgf098 2019-09-24
可以select .... into temp table_tst,创建了临时表,session一关,临时表就自动释放了。很多操作数据库内部也会自动创建临时表,只是外面感觉不到。
回复
Only了了 2019-09-24
引用 7 楼 wgf098 的回复:
[quote=引用 6 楼 Only了了 的回复:]
[quote=引用 5 楼 wgf098 的回复:]
可以select .... into temp table_tst,创建了临时表,session一关,临时表就自动释放了。很多操作数据库内部也会自动创建临时表,只是外面感觉不到。

谢谢你的回答!这样的话也可以。不过我还有几个疑问:
那创建的这个临时表,需不需要提交才能使用呢?
如果我不关闭session,使用回滚,临时表是否也会释放呢?
如果我多次执行select .... into temp table_tst,是否会造成数据重复?
也就是说每次执行前需不许要手动drop零时表或truancate数据呢?[/quote]

不提交就可以使用。
如果不关闭session,回滚后临时表就释放了。
同一个temp table_tst,无法多次执行select ... into temp table_tst;因为这条语句创建表并插入数据,所以第二次执行时就提示表已经存在了。
如果需要多次使用就得先drop掉。可以drop table if exists table_tst.这样的语法,即使table_tst不存在也不会返回错误提示。[/quote]

明白了,感谢感谢
回复
wgf098 2019-09-24
引用 6 楼 Only了了 的回复:
[quote=引用 5 楼 wgf098 的回复:] 可以select .... into temp table_tst,创建了临时表,session一关,临时表就自动释放了。很多操作数据库内部也会自动创建临时表,只是外面感觉不到。
谢谢你的回答!这样的话也可以。不过我还有几个疑问: 那创建的这个临时表,需不需要提交才能使用呢? 如果我不关闭session,使用回滚,临时表是否也会释放呢? 如果我多次执行select .... into temp table_tst,是否会造成数据重复? 也就是说每次执行前需不许要手动drop零时表或truancate数据呢?[/quote] 不提交就可以使用。 如果不关闭session,回滚后临时表就释放了。 同一个temp table_tst,无法多次执行select ... into temp table_tst;因为这条语句创建表并插入数据,所以第二次执行时就提示表已经存在了。 如果需要多次使用就得先drop掉。可以drop table if exists table_tst.这样的语法,即使table_tst不存在也不会返回错误提示。
回复
Only了了 2019-09-23
引用 3 楼 wgf098 的回复:
没有。可以用select..into...格式。select '123123' user_id,'201904' rptdate,'47' monfee from dual into table_tst,创建表table_tst的同时也插入了数据。

谢谢你的回答,但是我不想要插入并创建表,只是临时用一下
回复
wgf098 2019-08-16
没有。可以用select..into...格式。select '123123' user_id,'201904' rptdate,'47' monfee from dual into table_tst,创建表table_tst的同时也插入了数据。
回复
Only了了 2019-06-18
类似于Oracle的 with as 例如: with table_tst as ( select '123123' user_id,'201904' rptdate,'47' monfee from dual ) select * from table_tst;
回复
Only了了 2019-06-18
没有人回答嘛
回复
发帖
Informix
创建于2007-09-28

1183

社区成员

其他数据库开发 Informix
申请成为版主
帖子事件
创建了帖子
2019-06-17 03:32
社区公告
暂无公告