我有多个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))
答案 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的名称已被正式删除,但这并不意味着所有意图和目的)