MySQLのクエリエラー:SELECTリストはsql_modeの= ONLY_FULL_GROUP_BYと互換性がない、GROUP BY句ではなく、nonagregated列が含まれています

中小企業:

私はテーブルを評価し、その平均格付けで製品を取得して参加することになる彼らに、すなわち、製品のテーブルに参加することにより、2つのテーブルからレコードを取得していますが、残念ながらそれはライブサーバー上で動作していない私は、リンクの下に続くように、それがローカルホスト上で完璧に取り組んでいるがなく、無その変更が必要とするものなので、最終的に私は、それがクエリの問題であると認識localhostのために、それは完璧に働いていると私は、SQLモードの変更をしようとした場合、それが生きてMySQLサーバと示すpreveliges制限の場合には許可されていない、同じエラーを取得し、まだ変更クエリで適切に結果を取得します。

product

id     product_name    keyword

1        A               xyz
2        B               abc
3        C               aaa
4        D               abc

rating

id      product_id    rating  

1          2             2
2          2             4
3          1             2
4          4             3
5          2             3
6          2             4

MySQLのクエリ:

select p.pid,
       p.product_name, 
       COALESCE(ROUND(AVG(r.rating), 1), 0) as avgRate 
from product p 
left join rating r on r.product_id=p.id  
WHERE (LOWER(p.product_name) LIKE '%a%'  
   OR LOWER(p.keyword) LIKE '%abc%' )
GROUP BY p.product_id

言及リンク:

エラーMySQLでクエリを実行する際にONLY_FULL_GROUP_BYに関連します

#1055 - SELECTリストの発現は、GROUP BY句ではなく、非凝集の列が含まれているこれはsql_modeの= ONLY_FULL_GROUP_BYと互換性がありません。

明菜:

使用ANY_VALUE()関数:

select ANY_VALUE(p.pid) pid,
       ANY_VALUE(p.product_name) product_name, 
       COALESCE(ROUND(AVG(r.rating), 1), 0) as avgRate 
from product p 
left join rating r on r.product_id=p.id  
WHERE (   LOWER(p.product_name) LIKE '%a%'  
       OR LOWER(p.keyword) LIKE '%abc%' )
GROUP BY p.product_id

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=19659&siteId=1