Mysql Ansi SQL子查询

Mysql Ansi SQL子查询,mysql,sql,oracle,teradata,ansi-sql,Mysql,Sql,Oracle,Teradata,Ansi Sql,在特定的上下文中,我编写了一个通用查询,它将在许多不同的RDBMS(主要是Oracle和Teradata)中执行,为了实现这一点,我想按照ANSI SQL编写它,那么以下哪一项是有效的ANSI SQL查询: select tab.* from (...) tab where 1=1 /* or */ select tab.* from (...) as tab where 1=1 必须使用字段名进行所需搜索 从…中选择tab.*。。。tab where..field name..=1Secon

在特定的上下文中,我编写了一个通用查询,它将在许多不同的RDBMS(主要是Oracle和Teradata)中执行,为了实现这一点,我想按照ANSI SQL编写它,那么以下哪一项是有效的ANSI SQL查询:

select tab.* from (...) tab where 1=1
/* or */
select tab.* from (...) as tab where 1=1

必须使用字段名进行所需搜索


从…中选择tab.*。。。tab where..field name..=1

Second在Oracle上不起作用。两者都是有效的ANSI SQL,as关键字为optional@a_horse_with_no_name:那么为什么它不能像lad2025提到的那样在Oracle上工作呢?@54l3d lad2025是正确的。表别名的as关键字在oracle中是非法的。除非有一个实现对表别名强制使用as关键字,否则第一种语法将是可行的。否则,我担心您的错误。@54l3d:因为Oracle并不总是遵循SQL标准。根据标准,语句是有效的,这并不意味着它在所有DBMSW上运行,其中1=1是有效的,即使在这种情况下没有用处。显然,他的问题与ANSI SQL中AS关键字的使用有关,而不是他的查询是否有用。