H2 和 COALESCE 与子 select 列,未找到
H2 and COALESCE with sub-select column, not found
我有一个查询可以在 MySQL 中使用,但也需要使用 H2。
该查询执行子select 以生成用于排序的列。空值被替换为一个值,因此它们被设置在顺序的最后。
H2 抱怨子查询列不存在的错误语法,它与 MYSQL 一起工作得很好。我在 H2 上设置了 MYSQL 模式。
这是查询:
SELECT
OO.ID,
OO.UUID,
OO.BLOCKED,
OO.CREATED,
OO.UPDATED,
(SELECT
VALUE
FROM PUBLIC.OOSER_PA
WHERE (ATT_ID = (SELECT
ID
FROM PUBLIC.PAT
WHERE NAME = 'ooserFirst'))
AND (OOSER_ID = OO.ID)) AS SORTED
FROM PUBLIC.OOSER OO
ORDER BY =COALESCE(SORTED, 'zzzzzzzzzz')
LIMIT 0 OFFSET 10
如果查询需要在两个系统上工作,我建议您使用子查询:
SELECT oo.*
FROM (SELECT OO.ID, OO.UUID, OO.BLOCKED, OO.CREATED, OO.UPDATED,
(SELECT op.VALUE
FROM PUBLIC.OOSER_PA op
WHERE op.ATT_ID = (SELECT p.ID
FROM PUBLIC.PAT p
WHERE p.NAME = 'ooserFirst'
) AND
op.OOSER_ID = OO.ID
) AS SORTED
FROM PUBLIC.OOSER OO
) oo
ORDER BY COALESCE(SORTED, 'zzzzzzzzzz')
LIMIT 0 OFFSET 10;
我有一个查询可以在 MySQL 中使用,但也需要使用 H2。 该查询执行子select 以生成用于排序的列。空值被替换为一个值,因此它们被设置在顺序的最后。 H2 抱怨子查询列不存在的错误语法,它与 MYSQL 一起工作得很好。我在 H2 上设置了 MYSQL 模式。
这是查询:
SELECT
OO.ID,
OO.UUID,
OO.BLOCKED,
OO.CREATED,
OO.UPDATED,
(SELECT
VALUE
FROM PUBLIC.OOSER_PA
WHERE (ATT_ID = (SELECT
ID
FROM PUBLIC.PAT
WHERE NAME = 'ooserFirst'))
AND (OOSER_ID = OO.ID)) AS SORTED
FROM PUBLIC.OOSER OO
ORDER BY =COALESCE(SORTED, 'zzzzzzzzzz')
LIMIT 0 OFFSET 10
如果查询需要在两个系统上工作,我建议您使用子查询:
SELECT oo.*
FROM (SELECT OO.ID, OO.UUID, OO.BLOCKED, OO.CREATED, OO.UPDATED,
(SELECT op.VALUE
FROM PUBLIC.OOSER_PA op
WHERE op.ATT_ID = (SELECT p.ID
FROM PUBLIC.PAT p
WHERE p.NAME = 'ooserFirst'
) AND
op.OOSER_ID = OO.ID
) AS SORTED
FROM PUBLIC.OOSER OO
) oo
ORDER BY COALESCE(SORTED, 'zzzzzzzzzz')
LIMIT 0 OFFSET 10;