问题标签 [sql-standards]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
219 浏览

sql - 是否符合加入标准 sql 的更新

是否符合以下标准 SQL?如果不是,那为什么不呢?

0 投票
1 回答
24 浏览

sql - 如何使用 Oracle 11 查询数据

我正在努力查询数据作为示例

我的愿望结果

结果的规则

  • 使用 Customer Register_status 必须显示最新状态
  • 日期必须是更改最后状态的第一个日期
  • 如果 Customer_Register_Status 永远不会更改显示,则必须显示交易的第一个日期

请指导我如何创建查询以获取结果

0 投票
2 回答
100 浏览

mysql - 两个值之间的 SQL 标准

我想知道,当我们使用“介于”时,SQL 标准或 MySQL 是否存在差异。更准确地说,如果我这样做,在 SQL 标准中:

是否等于:

MySQL中的结果是否相同。

0 投票
2 回答
586 浏览

sql - SQL Server - 具有相关性的条件聚合

背景:

原来的情况很简单。从最高收入到最低计算每个用户的总收入:

询问:

LiveDemo

输出:

它可以使用特定的窗口函数进行不同的计算。


现在让我们假设我们不能使用 windowedSUM并重写它:

LiveDemo

我使用过CROSS APPLY是因为我不喜欢SELECT列列表中的相关子查询并且c3被使用了两次。

一切正常。但是当我们仔细观察时c2,又c3是非常相似的。那么为什么不将它们结合起来并使用简单的条件聚合:

不幸的是,这是不可能的。

在包含外部引用的聚合表达式中指定了多个列。如果要聚合的表达式包含外部引用,则该外部引用必须是表达式中引用的唯一列。

当然我可以用另一个子查询来绕过它,但它变得有点“丑陋”:

LiveDemo


Postgresql版本。唯一的区别是LATERAL代替CROSS APPLY.

SqlFiddleDemo

它工作得很好。


SQLite/MySQL版本(这就是我喜欢的原因LATERAL/CROSS APPLY):

SQLFiddleDemo-SQLite SQLFiddleDemo-MySQL


我读过带有外部参考的聚合

限制的来源在SQL-92标准中,并SQL ServerSybase代码库继承。问题是 SQL Server 需要确定哪个查询将计算聚合。

我不寻找显示如何规避它的答案。

问题是:

  1. 标准的哪一部分不允许或干扰它?
  2. 为什么其他 RDBMS 对这种外部依赖没有问题?
  3. 它们是否按照应有的方式扩展SQL StandardSQL Server运行,或者SQL Server没有完全实现(正确?)?

我将非常感谢参考:

  • ISO standard(92 或更新)
  • SQL Server 标准支持
  • 来自任何 RDBMS 的官方文档来解释它(SQL Server/Postgresql/Oracle/...)。

编辑:

我知道SQL-92没有LATERAL. 但是带有子查询的版本(如 in SQLite/MySQL)也不起作用。

LiveDemo

编辑2:

为了简化一点,让我们只检查相关子查询:

上面的版本在MySQL/SQLite/Postgresql.

SQL Server我们得到错误。在用子查询包装它以将其“展平”到一个级别后,它可以工作:

这个问题的重点是如何SQL standard规范它。

LiveDemo

0 投票
2 回答
5229 浏览

google-bigquery - 使用标准 SQL 的 BigQuery 表装饰器

我在使用使用标准 SQL 的表装饰器时遇到了一些麻烦。但是,与 Legacy SQL 语法相同的概念对我有用。这是一个错误吗?这是一个例子。

(A) 以下查询没有任何问题

SELECT COUNT(*) FROM [some-project-name:some_dataset.some_table_name@<time1>-<time2>]

(B) 以下查询返回错误消息 Error: Table "some-project-name.some_dataset.some_table_name@<time1>-<time2>" cannot include decorator

SELECT COUNT(*) FROM `some-project-name.some_dataset.some_table_name@<time1>-<time2>`

笔记:

  • 查询 (A) 已选中Use Legacy SQL 框。
  • 查询 (B)未选中Use Legacy SQL 框。
  • <time1>是绝对的,是自 Unix 纪元以来表的创建时间,以毫秒为单位。
  • <time2>是以毫秒为单位的当前时间戳

更新:

正如 Mikhail 所指出的,此功能不适用于标准 SQL。已在此处请求。

0 投票
4 回答
2889 浏览

string - Google Big Query 中倒数第三个子字符串

我使用标准 sql 并想从末尾提取第三个子字符串。

0 投票
1 回答
33 浏览

sql - SQL 语句 OR:显示每一行,其中的值出现故障

我有一个非常具体的问题:

我在 Access 中有一个公司列表和该公司的不同角色,所有内容都在一个表中,如下所示:

公司 // 角色 1 // 角色 2 // 角色 3 // 角色 4 //

Comp1 // 泰德 // // // 吉米 //

Comp2 // Lin // Ted // 安迪 // //

等等...

我现在需要创建一个 sql 语句,它为我提供了 Ted 作为示例在其中发挥作用的每一家公司(行)。

我在 SQL 下的 Access 中尝试过这样 - 语句:

但随后它只显示 Ted 在第一列中的行,我知道其中可能存在愚蠢的错误,我已经遇到了这个问题,但我不记得上次我是如何解决的。

如果你能帮忙就好了,因为我真的需要它来工作

0 投票
1 回答
529 浏览

sql - 错误附近的语法不正确

我对这段代码有疑问,错误是附近的语法不正确,请帮助。

0 投票
0 回答
71 浏览

sql - sql标准中表名的定义是什么

我浏览 了ISO/IEC 9075:1992,我没有找到任何关于表名定义的信息,比如应该使用什么样的字符,长度的限制。而且我还浏览了ISO/IEC 9075:2011,关于token的词汇定义对我来说真的很难,我看不懂。谁能为我解释一下?这个问题可以简化为这个问题,可以按照标准在表名中使用句点等特殊字符吗?

0 投票
3 回答
1124 浏览

sql - SQL标准中真的有必要有GROUP BY吗

在写了几年 SQL 之后,我发现必须将我感兴趣的列SELECT然后在GROUP BY. 我不禁想,我们为什么要这样做?

用户必须具体说明要分组的列的原因是什么?我们不能让 SQL 引擎假设是否存在聚合函数SELECT,按其余非聚合列分组吗?

当您有大量CASE WHENSELECT.