1

PHP PDOで正常に機能するgroupbyクエリがありますが、mysqliniに"sql_mode = ONLY_FULL_GROUP_BY"を追加すると、同じクエリがエラーで失敗します。

SQLSTATE [42000]:構文エラーまたはアクセス違反:1055'db.table.t_date'がGROUPBYにありません

実際のクエリ

SELECT 
    * 
FROM 
(
    SELECT 
        DATE_FORMAT(t_date, '%b') AS mon, 
        DATE_FORMAT(t_date, '%Y-%m') AS fy_date, 
        (SUM(val1) - SUM(val2)) AS net_val 
    FROM 
        TABLE 
    GROUP BY 
        YEAR(t_date), 
        MONTH(t_date) 
    ORDER BY 
        DATE_FORMAT(t_date, '%Y-%m') DESC 
    LIMIT 12
) AS tbl 
ORDER BY 
    fy_date

上記のクエリが機能しない理由を誰かに教えてもらえますか

sql_mode = ONLY_FULL_GROUP_BY
4

1 に答える 1

2

集計されていないすべての列をグループ化する必要がdate_formatあるため、両方の式をに追加する必要があります。group by

SELECT 
    DATE_FORMAT(t_date, '%b') AS mon, 
    DATE_FORMAT(t_date, '%Y-%m') AS fy_date, 
    (SUM(val1) - SUM(val2)) AS net_val 
FROM 
    TABLE 
GROUP BY 
    DATE_FORMAT(t_date, '%b'), 
    DATE_FORMAT(t_date, '%Y-%m') 
ORDER BY 
    DATE_FORMAT(t_date, '%Y-%m') DESC 
于 2012-09-15T11:42:20.470 に答える