尝试选择两个子选择的组合。这在MySQL中运行良好,但在我的H2 liquibase实例中不起作用。
在H2,它失败了:
错误:执行SQL时出错。 SQL语句中的语法错误
打印出整个输入。
我在Intellij中启用了H2代码格式,并在命名表t1
周围显示错误。不确定如何在H2中进行子选择的连接。
SELECT name, store_code, min, max, message
FROM (
(
SELECT
DISTINCT name, level, store_code
FROM
name_mapping
WHERE
store_code in ('us', 'ca')
) t1
JOIN
(
SELECT id as 'level', 5 as 'min', 7 as 'max', 'two' as 'message' from level where description='slow'
UNION SELECT id as 'level', 3 as 'min', 5 as 'max', 'two' as 'message' from level where description='medium'
UNION SELECT id as 'level', 1 as 'min', NULL as 'max', 'one' as 'message' from level where description='fast'
) t2
ON t1.level = t2.level
)
GROUP BY name, store_code, min, max, message;
尝试根据联接将新信息插入新表中。 level
表具有基于级别id的速度信息(我们必须按描述查找,因为id是自动递增的)。我想加入,那个包含在另一个表name_mapping
中的速度级别的所有名称都加入了级别ID。
更新
这也在H2中出现语法错误但在MySQL中运行良好:
select * from ( (select 'a') t1 join (select 'a') t2 on t1.a=t2.a );