gpt4 book ai didi

mysql - monetdb SQL 中的变量

转载 作者:行者123 更新时间:2023-11-30 00:09:40 24 4
gpt4 key购买 nike

我很困惑 at 符号变量是否可以在 MonetDB 中工作。是标准 SQL 还是只是 mySQL? (参见例如 this 在这里回答。)MonetDB 声称支持 SQL:2003 (完整功能列表 here ,我很难解析),但是 this这就是他们所说的变量。

MonetDB 中的以下行失败,提示意外的符号 :。但有办法完成这项工作吗?我认为无法将 SET(在 DECLARE 之后)与 SELECT 结合起来。

SELECT @firstq := QUANTILE(share26_2007,0.25) FROM sys.share26_2007;

(之后,以下是预期的用例:)

SELECT peorglopnr, CASE WHEN share26_2007 < @firstq THEN 1

最佳答案

正如评论中已经指出的,@ 变量不是标准 SQL。

使用 DECLARESET 可以工作::

DECLARE firstq double;
SET firstq = ( SELECT quantile(share26_2007, 0.25) FROM share26_2007 );

SELECT peorglopnr, CASE WHEN share26_2007 < firstq THEN 1 .....

注释:

  • 从您的示例中我了解到,您有一个表 share26_2007,其中有一列 share26_2007。我遵循了这个假设。
  • 我将变量 firstq 声明为 double。您的示例未指定列 share26_2007 的类型。相应地更改变量类型。
  • 将变量的值设置为返回原子值的 SELECT 的结果时,确实需要在 SELECT 两边加上括号。
  • 目前 quantile 似乎无法在 MonetDB 中正常工作(请参阅 https://www.monetdb.org/bugzilla/show_bug.cgi?id=4076 ),但这与您的问题无关。上面的语法有效(您可能需要通过将 quantile 替换为 sys.quantile 来验证)

关于mysql - monetdb SQL 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24188596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com