サブクエリ使用時に、ALL、ANY演算子を使用するとIDB-3022エラーが発生します。
サブクエリでALL 演算子を使用した場合の例
mysql> SELECT * FROM t1 WHERE col2 > ALL (SELECT col2 FROM t2);
ERROR 138 (HY000): IDB-3022: Scalar subquery within a function is currently not supported.
mysql> SELECT * FROM t1 WHERE col2 > ALL (SELECT col2 FROM t2);
ERROR 138 (HY000): IDB-3022: Scalar subquery within a function is currently not supported.
サブクエリでANY 演算子を使用した場合の例
mysql> SELECT * FROM t1 WHERE col2 > ANY(SELECT col2 FROM t2);
ERROR 138 (HY000): IDB-3022: Scalar subquery within a function is currently not supported.
mysql> SELECT * FROM t1 WHERE col2 > ANY(SELECT col2 FROM t2);
ERROR 138 (HY000): IDB-3022: Scalar subquery within a function is currently not supported.
現在(2014/8 バージョン4.5以下)、InfiniDBはサブクエリのALL、ANY演算子の使用はサポートしていません。そのため、該当の処理を実施したい場合は以下のようにSQLを書き換えてください。
ALL演算子のクエリの書き換え例
1 2 3 4 5 6 7 |
mysql> SELECT * FROM t1 WHERE col2 > (SELECT MAX(col2) FROM t2); +-----------+------+ | col1 | col2 | +-----------+------+ | バナナ | 3 | +-----------+------+ 1 row in set (0.02 sec) |
ANY演算子のクエリの書き換え例
1 2 3 4 5 6 7 8 |
mysql> SELECT * FROM t1 WHERE col2 > (SELECT MIN(col2) FROM t2); +-----------+------+ | col1 | col2 | +-----------+------+ | みかん | 2 | | バナナ | 3 | +-----------+------+ 2 rows in set (0.01 sec) |