0

MySQL 5.7 を使用しており、以下のクエリがあります。

SELECT 
    U.*,
    C.country,
    C.id AS country_id,
    C.iso
FROM 
    `users` AS U
LEFT JOIN
    `countries` AS C
ON 
    U.user_country_id = C.id
WHERE
    U.user_deleted = 0
GROUP BY
    U.user_country_id
HAVING 
    MAX(U.user_credits)

問題は:

キャッチされない PDOException: SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1055 SELECT リストの式 #1 が GROUP BY 句になく、GROUP BY 句の列に機能的に依存していない非集計列 'dbname.U.id' が含まれています。

グループを次のように変更できません (間違った結果): GROUP BY U.user_country_id, U.id

リクエストを正しい方法で変更するにはどうすればよいですか? ありがとう!

4

1 に答える 1

0

この方法で max(U.user_credits) の行を取得できます

SELECT 
    U.*,
    C.country,
    C.id AS country_id,
    C.iso
FROM 
    `users` AS U
LEFT JOIN
    `countries` AS C
ON 
    U.user_country_id = C.id
WHERE
   U.user_deleted = 0
AND   U.user_credits = ( select max(U.user_credits) from `users` as U)
于 2016-08-31T20:35:10.170 に答える