中小企業:
私はテーブルを評価し、その平均格付けで製品を取得して参加することになる彼らに、すなわち、製品のテーブルに参加することにより、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