2017-11-20 35 views
1

私はMySQLで動作するクエリを持っていますが、H2でも機能する必要があります。 クエリでは、順序付けに使用される列を生成するためにサブ選択が実行されます。ヌルは値で置き換えられるため、最後に順序が設定されます。 H2はサブクエリ列が存在しないという悪い文法について文句を言っていますが、それはMYSQLでうまくいきます。私はMYSQLモードをH2に設定しました。サブセレクト列のH2とCOALESCEは見つかりません

これはクエリです:

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 

答えて

2

クエリは二つのシステムで作業する必要がある場合、私はあなたがサブクエリを使用することを示唆している:

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;