"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'asc'" というエラーが発生する

問題点

ExploratoryデスクトップでMySQLからデータを取得する際、もしくはMySQLからデータを取得する処理を含むスケジュールの実行時に、以下のエラーが発生し、処理が失敗する。

Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'asc'

原因

MySQLのバージョンを8.0以降にアップグレードしたことにより、GROUP BY句内でASCDESCを指定する書き方がサポートされなくなったためです。

旧バージョンのMySQLでは、以下のような非標準の構文が許容されていましたが、MySQL 8.0以降では構文エラーとなります。

GROUP BY sales_by_year ASC

これは、GROUP BYORDER BYの役割を明確に分けるという、標準SQL仕様に沿った変更によるものです。

解決方法

GROUP BYORDER BYを分けて記述するようにSQLを修正します。

修正前:

GROUP BY sales_by_year ASC

修正後:

GROUP BY sales_by_year
ORDER BY sales_by_year ASC

このように、

  • GROUP BYではグルーピングのみを行う
  • 並び順の指定はORDER BYで行う

という形に分けることで、MySQL 8.0以降でもエラーなく実行できるようになります。