【问题标题】:Sub-Queries in Sybase SQLSybase SQL 中的子查询
【发布时间】:2015-07-13 09:06:50
【问题描述】:

我们有一个使用用户编写的 SQL 语句索引数据的应用程序。我们将这些语句放在括号内,以便我们可以将该查询限制为特定条件。例如:

select * from (select F_Name from table_1)q where ID > 25

虽然我们发现这种格式在使用 Sybase 数据库时不起作用。报告括号周围的语法错误。我试过在一个测试实例上玩,但还没有找到实现这个结果的方法。我没有直接参与开发,我的 SQL 知识有限。我假设“q”是给子结果一个别名供应用程序使用。

Sybase 有特定的语法吗?如果是这样,该查询如何适应它?

提前致谢。

【问题讨论】:

  • 你使用什么样的SYBASE数据库? ASE,智商,任何地方? SYBASE是公司不是db系统。您的查询适用于 ASE。
  • 在大多数情况下,您可以只使用标准的JOINs 而不是FROM 子查询。
  • 在其他情况下,您经常使用临时表 (#tablename) 来保存子查询的结果,以供下次查询使用。
  • 除了其他人报告的区分大小写的问题外,查询select * from (select F_Name from table_1)q where ID > 25 不应该在任何DBMS 中工作。派生表 q 只有一列 (F_Name),并且没有名为 ID 的列。所以,它应该在我能想到的所有 DBMS 中抛出关于 qID 的错误。
  • 我会提供更多信息,我不知道有各种版本。

标签: sql database syntax subquery sybase


【解决方案1】:

Sybase ASE 区分大小写 w.r.t。所有标识符和查询都应该起作用:

根据@HannoBinder 查询:

select id from ...select ID from... 不一样,所以要确定大小写。

还要确保 ID 列由 Q 查询返回,以便在 where 子句中使用。

如果表名和列名是大写,则以下查询将起作用:

select * from (select F_NAME, ID from TABLE_1) Q where ID > 25

【讨论】:

  • “SYBASE 不支持小写的列名或表名”- Sybase ASE 区分大小写 w.r.t。所有标识符。
  • @HannoBinder:你的意思是 in - 敏感,对吧?
  • 并编辑您的查询以反映您所说的内容,例如select F_NAME from (select ID, F_NAME from TABLE_1) Q where Q.ID > 25
  • @a_horse_with_no_name 不,我的意思是 区分大小写select id from ...select ID from... 不同。
  • @HannoBinder 我用身份证说明了这一点......谢谢大家:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
  • 2018-05-27
  • 2011-12-26
  • 2015-01-18
  • 2014-01-05
相关资源
最近更新 更多