【问题标题】:subquery in sybase Create table clausesybase 创建表子句中的子查询
【发布时间】:2015-01-18 14:49:16
【问题描述】:

我有多个要转换为 Sybase 语言的 Oracle 查询。由于我是 Sybase 新手,我想知道我们是否可以在 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))

【问题讨论】:

  • 在 Sybase 中运行查询时会发生什么?
  • 我无法运行查询,因为数据库在客户端,这些是删除/创建查询,会更改客户数据,但这种语法是否适用于 Sybase? @BobJarvis

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


【解决方案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)

所有其他情况,您可以保持“原样”。您可以在 delete 子句中使用子查询(但可能是 group by 的例外)

【讨论】:

    【解决方案2】:

    备注 #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 已被正式删除,但这对于所有意图和目的都无关紧要)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 2012-09-29
      • 2014-09-14
      • 2015-01-09
      相关资源
      最近更新 更多