複数のテーブルを結合するSELECT文を実行した際に、以下のエラーが返る場合があります。

ERROR 138 (HY000): IDB-1003: Circular joins are not supported.


Circular join(サーキュラージョイン)とは日本語にすると「循環結合」です。つまり、以下のように検索条件(結合条件)が循環してしまうような結合のことを指します。

サーキュラージョインの例



このSQLの場合、下図のようにWHERE句ですべてのテーブルを循環するような条件が指定されています。

  ① a.col1 <----- ④ d.col1
    |              ∧
    |              |
    ∨              |
  ② b.col1 -----> ③ c.col1



InfiniDBは現在(2014/8 バージョン4.5以下)、サーキュラージョインをサポートしていないため、このような検索をする場合は、以下のようにSQLを書き換えてください。



このように、何れかの条件に「+ 0」を付けることで結合の循環は崩れる(この比較は結合ではなく等価比較とみなされる)ため、エラーとならず正常に処理できます。
※検索結果に影響はありません。