【问题标题】:H2DB WITH clauseH2DB WITH 子句
【发布时间】:2014-03-08 22:48:44
【问题描述】:

我正在使用以下 sql 为方法编写单元测试

WITH    temptab(
i__id ,  i__name, i__effective, i__expires, i__lefttag, i__righttag,
hier_id, hier_dim_id, parent_item_id, parent_hier_id, parent_dim_id, 
ancestor, h__id, h__name, h__level, h__effective, h__expires, rec_lvl)  
AS ( 
  SELECT 
  item.id          as i__id,        
  item.name        as i__name,        
  item.effectivets   as i__effective,        
  item.expirests     as i__expires,       
  item.lefttag     as i__lefttag,     
  item.righttag    as i__righttag,       
  hier_id,        hier_dim_id,        
  parent_item_id,      
  parent_hier_id,     
  parent_dim_id,        1          as ancestor,    
  hier.id    as h__id,        hier.name  as h__name,   
  hier.level as h__level,        hier.effectivets as h__effective,    
  hier.expirests as h__expires,        1 as rec_lvl FROM   metro.item item,      
   metro.hierarchy hier  WHERE  item.id    = 'DI'     AND hier_id    = '69'     AND hier_dim_id= '36'  AND hier.id    =item.hier_id
 )
SELECT  
  i__id,    i__name,    i__effective,    i__expires,    i__lefttag,  
  i__righttag,    hier_id,    hier_dim_id,    parent_item_id,  
  parent_hier_id,    parent_dim_id,    ancestor,   
  h__id,    h__name,    h__level,    h__effective,    h__expires 
FROM temptab 

此查询返回空数据集,但我希望有 1 行。

数据是正确的,因为没有 with 子句的类似简单查询可以正常工作。

我调查了这个问题,我发现了
Sub Query with WITH-CLAUSE in H2DB 但该解决方案没有帮助。

那么,有人知道H2是如何支持with子句的吗?

提前感谢您的宝贵时间。

【问题讨论】:

  • h2 only 支持递归 CTE。它支持常规 CTE

标签: sql h2 with-statement


【解决方案1】:

现在支持http://www.h2database.com/html/grammar.html 也适用于非递归查询。

【讨论】:

  • 写在哪里?
【解决方案2】:

根据以下:h2 database grammar

看起来 H2 数据库不支持 WITH 子句,但对递归查询的实验性支持除外:h2 recursive queries

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-09-24
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 2019-08-28
  • 2010-11-16
  • 2020-05-01
相关资源
最近更新 更多