sybase中的子查询创建表子句

时间:2014-11-20 16:32:53

标签: oracle subquery sybase database-migration sql-delete

我有多个Oracle查询要转换为Sybase语言。由于我是Sybase的新手,我想知道我们是否可以在" create clause"中插入子查询。或者在"删除条款"在sybase?

create table LIQ_PURGE_AK as select M_REFERENCE from LPOS_AK_DBF where M_PRIC_TYPE in (2, 3)

select distinct M_PROD_OREF from LPOS_DTL_DBF where M_REFERENCE in (select M_OBJ_DETAIL from LPOS_LQE_DBF where M_AK_CLASS = 'MEqGp44051' and M_AK_REF in (select M_REFERENCE from LIQ_PURGE_AK3)) 


delete from LPOS_DTL_DBF where M_REFERENCE in (select M_OBJ_DETAIL from LPOS_LQE_DBF where M_AK_CLASS = 'MEqGp44051' and M_AK_REF in (select M_REFERENCE from LIQ_PURGE_AK3))

2 个答案:

答案 0 :(得分:1)

这种情况:

create table LIQ_PURGE_AK as select M_REFERENCE from LPOS_AK_DBF where M_PRIC_TYPE in (2, 3)

你可以改为:

select M_REFERENCE into LIQ_PURGE_AK from LPOS_AK_DBF where M_PRIC_TYPE in (2, 3)

你可以离开的所有其他情况"原样"。您可以在删除子句中使用子查询免费(但可以是分组的例外)

答案 1 :(得分:0)

备注#1:我假设您在这里谈论Sybase ASE(Sybase IQ和Sybase SQL Anywhere的SQL方言不同)。为了让大家帮助您,请始终指定您正在使用的产品和实际版本。 “Sybase”不是数据库,而是一系列数据库,它们之间存在很多差异。

Raemark#2:只有一种解决此类问题的好方法,那就是尝试运行它。你可以(而且应该)下载一个免费版本的ASE来试试这些东西。见www.sypron.nl/ase_free

备注#3:CREATE TABLE ... SELECT语法在ASE中无效。但是,您可以执行SELECT-INTO,这将创建表(与其他SQL方言中的SELECT-INTO不同,后者将检索到的值分配给变量)。在http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.help.ase.15.7.sp100/doc/html/title.html的ASE文档中查找SELECT-INTO语法(请注意Sybase的名称已被正式删除,但这并不意味着所有意图和目的)